Sea*_*ean 5 java generics wildcard
刚遇到一个我想使用泛型的地方,我不知道如何让它按照我想要的方式工作.
我的数据层中有一个方法来执行查询并返回一个对象列表.这是签名.
public List getList(Class cls, Map query)
Run Code Online (Sandbox Code Playgroud)
这就是我想要的调用代码.
List<Whatever> list = getList(WhateverImpl.class, query);
Run Code Online (Sandbox Code Playgroud)
我想做到这一点,以便我不必将其投射到一个List<Whatever>出来,这导致我这样做.
public <T> List<T> getList(Class<T> cls, Map query)
Run Code Online (Sandbox Code Playgroud)
但是现在我遇到的问题是,我得到的东西总是具体List<WhateverImpl>传入,而我希望它是Whatever界面.我试图使用super关键字,但无法弄明白.那里的任何仿制药大师都知道如何做到这一点?
你需要像这样定义方法:
public <B, C extends B> List<B> getList(final Class<C> cls, final Map<?, ?> query)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |