我有我想概括两类:T是什么类型?
public class General<T> {
T content;
setContent(T content) { ... };
}
public class Specific {
Foo text;
setText(Foo text) { ... };
}
T
可以有三种不同的类型,所有这些类。 Foo
是其中之一,Pair
是另一个。 我要介绍一个抽象超推广到的属性的访问:
public abstract class Superclass {
abstract void setText(Foo text);
}
这两个类(General
和Specific
)延伸此超类。但现在我已经实现了类General
的制定者一个问题:
public void setText(Foo text) {
if (T is of type Foo) content = (T) text;
if (T is of type Pair) ((Pair)content).setHead(text);
...
}
我有什么写的,而不是is of type
? Java中有没有这样的表达式在编译时被评估?
我可以检查什么类型的content
是,但我想这不会工作,如果是null。另外,我可以用? extends Object
之类的东西代替T
,但是如何创建(之前)T
的实例呢?
我用Google搜索了一下,但是我找不到这个特定问题的充分答案。
有没有表达式会在编译时进行评估,因为泛型代码将被共享。相反,你可以像'class GeneralInteger extends General'这样做,并在其中覆盖'setText'。 –
你几乎不能做你想做的事情,而且必须找到另一种方法。其他一些评论已经提出了一些方法来实现它。 –