我试图理解Example also below这里发生的事情的这种表示法。我正在寻找是否有人可以提供其他代码来帮助我理解这一点。如何使用T扩展垃圾邮件?这意味着什么?
public class Junk<T extends Junk>
{
public Junk()
{
}
public T returnType()
{
return null; //? what would I even return
}
//what would I do to make sense of this class
}
最佳答案
T
是通用类型参数。您知道它是垃圾邮件或它的子类。要从您的方法返回有用的任何东西,您需要使用相同类型的其他一些方法。例如:
public class Junk<T extends Junk> {
T var;
public void setT(T var) {
this.var = var;
}
public T returnType(){
return var;
}
}
可以通过创建指定type参数的实例来使用它:
Junk junk = new Junk<Junk>();
junk.setT(new Junk<Junk>());
junk.returnType();
这比简单地使用“垃圾”代替“ T”更为有用,因为可以使用子类型而不会丢失类型安全性。如果您有子类
SubclassJunk
,则可以执行以下操作:Junk junk = new Junk<SubclassJunk>();
junk.setT(new SubclassJunk<Junk>());
SubclassJunk subclass = junk.returnType();