该类TrainingData有一个属性intent,可以是类的任何子类型Intent.我正在尝试使用Java Generics来强制泛型类型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 + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
TrainingData类具有属性intent,可以是Intent类的任何子类型.
尝试T extends Intent这意味着任何扩展Intent的类都被接受.
public class TrainingData<T extends Intent> extends Data {...}
Run Code Online (Sandbox Code Playgroud)
阅读更多Java教程有界类型参数
也可以为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;
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |