遗传的泛型

Dar*_*der 1 java generics

该类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)

Bra*_*raj 6

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)