我试图理解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();

09-28 13:00