繁体   English   中英

实现特定接口的Java属性

[英]Java attribute which implements a certain Interface

说我有一个要添加属性的类。 此属性的值应实现某个接口。 但是,我不关心它是什么类型的对象/类,只要它从某个接口实现方法即可。

有没有办法实现这种行为?

在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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM