Jas*_*son 2 java generics collections interface arraylist
我有一组类都实现了具有该方法的验证接口isValid()
.我想把一组对象 - 所有不同的类 - 放入一个ArrayList中,循环遍历它们并调用isValid()
每个对象.
这是我的代码
Email email = new email();
Address address = new Address();
ArrayList<? extends Validation> myValidationObjects = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试做的时候:
myValidationObjects.add(email);
Run Code Online (Sandbox Code Playgroud)
我明白了:
方法add(捕获#2-of?extends Validation)在ArrayList类型中不适用于参数(Email)
双方Email
并Address
实施验证.
根据这个文档,我应该可以extends
用于接口和子类.
List<? extends Validation> myValidationObjects
“ myValidationObjects
是扩展对象的列表Validation
。”
“ myValidationObjects
可以是任何扩展类型的列表Validation
。例如,可以是a List<RangeValidation>
或a List<RegexValidation>
。”
由于没有对象,您可以合法地添加到a List<RangeValidation>
和a中List<RegexValidation>
,因此Java禁止您调用add
此类变量。
实际上,您的情况比较简单:您需要定型List<Validation>
。
您可以使用:
List<Validation> myValidationObjects = new ArrayList<>(); // Java 7
List<Validation> myValidationObjects = new ArrayList<Validation>(); // pre Java 7
Run Code Online (Sandbox Code Playgroud)
现在,您可以添加实现Validation
该列表的类的任何实例.
归档时间: |
|
查看次数: |
5031 次 |
最近记录: |