[英]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.