什么是“T延伸垃圾”?在Java的泛型类中意味着什么? [英] What does "T extends Junk" mean in a generic class in Java?

查看:92
本文介绍了什么是“T延伸垃圾”?在Java的泛型类中意味着什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图理解这里发生了什么的符号下面的例子。我期待着看看是否有人可以提供额外的代码来帮助我理解这一点。如何用T扩展垃圾?这意味着什么?

  public class垃圾< T扩展垃圾> 
{

public垃圾()
{

}

public T returnType()
{
返回null; //?我甚至会返回什么?
}

//我该怎么做才能理解这个类
}

解决方案> T 是一个泛型类型参数。你知道这是一个垃圾邮件,或者它的一个子类。要从你的方法中返回任何有用的东西,你需要一些使用相同类型的其他方法。例如:

  public class垃圾< T扩展垃圾> {
T var;

public void setT(T var){
this.var = var;
}

public T returnType(){
return var;




$ b

它可以通过创建类型参数被指定:

 垃圾垃圾=新垃圾<垃圾>(); 
junk.setT(新垃圾<垃圾>());
junk.returnType();

这比仅使用垃圾而非T更有用,因为可以使用子类型而不会损失类型安全性。如果您有一个子类 SubclassJunk ,那么您可以这样做:

 垃圾垃圾=新垃圾< SubclassJunk>(); 
junk.setT(new SubclassJunk< Junk>());
SubclassJunk subclass = junk.returnType();


I'm trying to understand this notation of whats going on here Example also below. I'm looking to see if anyone can supply additional code to help me make sense of this. How do I extend junk with T? what does that imply?

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 is a generic type parameter. You know it is a Junk, or a subclass of it. To return anything useful from your method, you'd need some other methods using the same type. For example:

public class Junk<T extends Junk> {
    T var;

    public void setT(T var) {
        this.var = var;
    }

    public T returnType(){
        return var;
    }
}

It can be used by creating instances where the type parameter is specified:

Junk junk = new Junk<Junk>();
junk.setT(new Junk<Junk>());
junk.returnType();

This is more useful than simply using "Junk" instead of "T", because subtypes can be used without losing type-safety. If you have a subclass SubclassJunk, then you can do:

Junk junk = new Junk<SubclassJunk>();
junk.setT(new SubclassJunk<Junk>());
SubclassJunk subclass = junk.returnType();

这篇关于什么是“T延伸垃圾”?在Java的泛型类中意味着什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆