Хорошо, возможно, это глупый вопрос.Но мне просто интересно, можно ли это сделать в Java.
abstract public class ParentClass<T> {
abstract public T getTest();
}
в подклассе
public class SubClass extends ParentClass<MyObject> {
public MyObject getTest() {
// I can return the object with class MyObject
return null;
}
}
Мой вопрос: могу ли я вернуть тип класса в дочернем методе?Я имею в виду, это может быть сделано путем добавления некоторого кода в ParentClass, чтобы я мог сделать это ниже?
Например
public class Sub1Class extends parentClass<Object1> {
public Object1 getTest() { }
// I want to have a method that return it's class in the superclass
public Sub1Class getItClassObject() { }
}
другой пример
public class Sub2Class extends parentClass<Object2> {
public Object2 getTest() { }
// I want to have a method that return it's class in the superclass
public Sub2Class getItClassObject() { }
}
снова один пример
public class Sub3Class extends parentClass<Object3> {
public Object3 getTest() { }
// I want to have a method that return it's class in the superclass
public Sub3Class getItClassObject() { }
}
если вы видите, метод getItClassObject в Sub1Class, Sub2Class и Sub3Class будет следовать его классу.Но я не хочу добавлять один и тот же метод для каждого подкласса, просто хочу добавить некоторый код (если это возможно) в ParentClasss, поэтому в подклассе я могу просто напрямую вызывать getItClassObject без записи всего кода в каждом подклассе.
Обычно я добавляю метод в ParentClass следующим образом.
abstract public class ParentClass<T> {
abstract public T getTest();
public Object getItClassObject() { }
}
, поэтому в подклассе я просто создаю экземпляр класса, но мне приходится снова приводить: (
Sub1Class sub1Class = new Sub1Class();
Sub1Class after1Cast = (Sub1Class) sub1Class.getItClassObject();
Sub2Class sub2Class = new Sub2Class();
Sub2Class after2Cast = (Sub2Class) sub2Class.getItClassObject();
Iдумаю, что это не может быть сделано в Java. Но я не знаю, есть ли ключ, чтобы решить эту проблему. Спасибо