2014-05-09 135 views
0

說我有一個我想添加屬性的類。這個屬性的值應該實現一個特定的接口。但是,我確實不關心它是什麼類型的對象/類,只要它從某個接口實現方法即可。實現某個接口的Java屬性

有沒有辦法實現這種行爲?

在Objective-C,我會做這樣的:

@property (nonatomic, strong) id <MyInterface> attr; 
+1

' MyInterface的ATTR;' –

回答

1

聲明領域類作爲接口類型:

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; 
} 
+0

謝謝!如果它必須實現多個接口呢? –

+0

@Jenox變量聲明爲單一類型。 –

+0

@Jenox你只能使用一個接口。確保其他接口從頂級接口延伸。 –