У меня есть основной вопрос о дженериках в Java. У меня есть класс X, который создается экземпляром другого класса T. В каждом классе T, который будет использоваться, есть метод, называемый methodOfT(). Однако Java дает мне ошибку времени компилятора, поскольку она не знает obj и methodOfT().Java Generic Calling Method of Variable Type
public class X<T>
{
T obj;
public void methodOfX()
{
obj.methodOfT();
}
}
Во избежание этой проблемы, что я сделал, я определил другой класс XSuper. И каждый класс, который хочет создать экземпляр X, расширит этот класс XSuper. Это устраняет ошибку времени компиляции и позволяет мне достичь того, что я хочу.
public abstract class XSuper
{
public abstract void methodOfT();
}
public class UserOfX extends XSuper
{
X<UserOfX> objX = new X<UserOfX>();
public void methodOfT()
{
}
}
Однако, я хочу знать более чистый способ сделать это. Поскольку я хочу получить класс UserOfX из другого класса. Другая проблема заключается в том, что я хочу, чтобы определить метод methodOfT(), как -
public methodOfT(T objOfT)
{
}
В этом случае указанное решение не удается. Может кто-то помочь.
Спасибо за ответ. Но, как я сказал, это решение потерпит неудачу, если я хочу, чтобы этот метод был «obj.MethodOfT (T anotherObjOfT)» – Raj
@RajTendulkar, в этом случае нам придется также сделать общий интерфейс, см. Мое обновление. –
Это помогает! Спасибо Большое. – Raj