В следующем, что я хочу, чтобы это произошло, что w.someMethod() возвращает экземпляр SomeSubClass. К сожалению, это не сработает. Я считаю, что код объяснит это лучше, чем я могу.Динамическое создание экземпляра класса
public abstract class SomeSuperClass {
public SomeSuperClass(int x) {
// do nothing
}
public SomeSuperClass someMethod() {
//this line
return (new Class()).getDeclaredConstructor(getClass()).newInstance(1));
//this line
}
}
public class SomeSubClass extends SomeSuperCLass {
public SomeSubClass(int x) {
super(x);
}
}
public static void main(String[] args) {
SomeSubClass w = new SomeSubClass(3);
SomeSubClass q = w.someMethod();
}
Вот мое возвращение
SomeSuperClass.java:7: error: Class() has private access in Class
return (new Class()).getDeclaredConstructor(getClass()).newInstance(1);
^
SomeSuperClass.java:7: error: incompatible types
return (new Class()).getDeclaredConstructor(getClass()).newInstance(1);
^
required: SomeSuperClass
found: Object
Main.java:4: error: incompatible types
SomeSubClass q = w.someMethod();
Для дальнейшего уточнения, следующий код будет делать то, что я хочу:
public abstract class SomeSuperClass {
public SomeSuperClass(int x) {
// do nothing
}
public abstract SomeSuperClass someMethod();
}
public class SomeSubClass extends SomeSuperCLass {
public SomeSubClass(int x) {
super(x);
}
public SomeSuperClass someMethod() {
return new SomeSubClass(1);
}
}
public static void main(String[] args) {
SomeSubClass w = new SomeSubClass(3);
SomeSubClass q = w.someMethod();
}
Но я хотел бы, чтобы SomeMethod быть в класс SomeSuperClass
Какие проблемы/ошибки вы сталкиваетесь? Если вы сталкиваетесь с сообщениями об ошибках компилятора или любыми исключениями из стека, отправьте их здесь с вашим вопросом. Если вы столкнулись с проблемами поведения программы, опишите их. –
В частности, здесь я получаю, что Class() имеет частный доступ. Если вместо этого я делаю вызов как Class.getDeclardedConstructor (...) ..., то я делаю статический вызов из нестатического контекста. – graviton