У меня есть абстрактный класс, унаследованный несколькими подклассами.В другом классе я получаю имя класса и должен создать экземпляр класса для вызова базового метода в родительском (абстрактном) классе.Но я получил значение null в поле «кеш» @Autowired, которое используется в базовом методе.ClassName - это поле ввода от внешнего интерфейса.Так что я думаю, что мне нужно создать экземпляр нового объекта для вызова метода.Заранее спасибо!
public abstract class Data(){
@Autowired protected Cache cache;
private Abc getDataContent(){
if(cache.containsKey()){
//do something
}else{
//do something else
}
}
}
public class Data1 extends Data(){
public Data1(){
super();
}
}
public class Data2 extends Data(){
public Data2(){
super();
}
}
public class Resource(){
public Abc getContent(){
Class<Data<?>> className = getClassName();
//className will be the classCanonicalName of Data1 or Data2;
return className.newInstance().getDataContent();
}
}