說我有一個我想添加屬性的類。這個屬性的值應該實現一個特定的接口。但是,我確實不關心它是什麼類型的對象/類,只要它從某個接口實現方法即可。實現某個接口的Java屬性
有沒有辦法實現這種行爲?
在Objective-C,我會做這樣的:
@property (nonatomic, strong) id <MyInterface> attr;
說我有一個我想添加屬性的類。這個屬性的值應該實現一個特定的接口。但是,我確實不關心它是什麼類型的對象/類,只要它從某個接口實現方法即可。實現某個接口的Java屬性
有沒有辦法實現這種行爲?
在Objective-C,我會做這樣的:
@property (nonatomic, strong) id <MyInterface> attr;
聲明領域類作爲接口類型:
public class YourClass {
private MyInterface attr;
}
也都不重要了類對象引用屬於它,只有當類實現了所需的接口時才重要。這裏有一個例子:
public class MyClass {
private List<String> stringList;
public void setStringList(List<String> stringList) {
this.stringList = stringList;
}
}
//...
MyClass myClass = new MyClass();
myClass.setStringList(new ArrayList<String>());
myClass.setStringList(new LinkedList<String>());
從您的評論:
我不認爲接口作爲類型。更像是一個對象所具有的功能。
在Java中,接口是一種類型。如果你想要一些類型在同一時間宣佈了兩個接口,您可以創建一個從兩個延伸的第三接口:
interface ThirdPartyInterface1 {
}
interface ThirdPartyInterface2 {
}
interface MyInterface extends ThirdPartyInterface1, ThirdPartyInterface2 {
}
public class YourClass {
private MyInterface attr;
}
謝謝!如果它必須實現多個接口呢? –
@Jenox變量聲明爲單一類型。 –
@Jenox你只能使用一個接口。確保其他接口從頂級接口延伸。 –
' MyInterface的ATTR;' –