我是Java泛型新手。我写了一个像下面这样的函数:
public class C<T extends MyClass> implements MyInterface<T>{
public void f(T obj){
...
obj.getName()
}
}
上面的函数
f
被两种对象MySubClass1
和MySubClass2
调用。 MySubClass1
和MySubClass2
是从抽象类MyClass
继承的两个更具体的类,并且name
是MySubClass2
的属性。当用
MySubClass2
的对象调用f时,我想访问上面的名称。我不知道该怎么做。 最佳答案
...名称是MySubClass2的属性
这样,您的方法就不能依赖它了,因为obj
可以是MyClass
派生的任何东西。
这表明您的设计应进行更改,以使您可以使用单独的方法,也可以将名称移至MyClass
。
您可以通过instanceof
检查和强制转换来实现:
if (obj instanceof MySubClass2) {
String name = ((MySubClass2)obj).getName();
}
...但是,十分之九,使用
instanceof
应该使您退后一步,重新考虑设计。关于java - 访问Java泛型函数中的具体属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48032994/