Java 具有继承性的泛型

Java 具有继承性的泛型,java,generics,Java,Generics,类TrainingData具有属性intent,该属性可以是类intent的任何子类型。我试图使用Java泛型来强制执行泛型类型T只能是Intent的子类。我该怎么做 public class TrainingData<T> extends Data { private T intent; private String id; public TrainingData (UserCommand userCommand, T intent) {

TrainingData
具有属性
intent
,该属性可以是类
intent
的任何子类型。我试图使用Java泛型来强制执行泛型类型
T
只能是
Intent
的子类。我该怎么做

public class TrainingData<T> extends Data {

    private T intent;
    private String id;

    public TrainingData (UserCommand userCommand, T intent) {
        super(userCommand);
        this.intent = intent;
    }

    public Klass getKlass() {
        return intent.getKlass(); // <-- THIS WORKS ONLY IF T extends from Intent
    }

    public Intent getIntent() {
        return intent;
    }

    public void setIntent(Intent intent) {
        this.intent = intent;
    }

    @Override
    public String toString() {
        return "TrainingData [intent=" + intent + ", id: " + id + "]";
    }
}
公共类培训数据扩展数据{
私人目的;
私有字符串id;
公共培训数据(UserCommand UserCommand,T intent){
超级(用户命令);
本意=本意;
}
公共Klass getKlass(){
返回intent.getKlass();//
class TrainingData具有属性intent,该属性可以是class intent的任何子类型

尝试使用
T extends Intent
,这意味着可以接受任何扩展Intent的类

public class TrainingData<T extends Intent> extends Data {...}
公共类TrainingData扩展数据{…}
阅读更多


对getter和setter方法也进行更改

class TrainingData<T extends Intent> extends Data {

    private T intent;

    public T getIntent() {
        return intent;
    }

    public void setIntent(T intent) {
        this.intent = intent;
    }
    ...
}
class TrainingData扩展数据{
私人目的;
公共T getIntent(){
返回意图;
}
公共无效设置意图(T意图){
本意=本意;
}
...
}
class TrainingData具有属性intent,该属性可以是class intent的任何子类型

尝试使用
T extends Intent
,这意味着可以接受任何扩展Intent的类

public class TrainingData<T extends Intent> extends Data {...}
公共类TrainingData扩展数据{…}
阅读更多


对getter和setter方法也进行更改

class TrainingData<T extends Intent> extends Data {

    private T intent;

    public T getIntent() {
        return intent;
    }

    public void setIntent(T intent) {
        this.intent = intent;
    }
    ...
}
class TrainingData扩展数据{
私人目的;
公共T getIntent(){
返回意图;
}
公共无效设置意图(T意图){
本意=本意;
}
...
}

我想是这样的:

public class TrainingData<T extends Intent> 
公共类培训数据

有关更多信息,请参见。

我认为是这样的:

public class TrainingData<T extends Intent> 
公共类培训数据
有关更多信息,请参阅。

的可能副本