[英]Generics specifying both the interface and concrete class getting unchecked cast warning
我在测试中有一些代码,需要将接口和具体实现都传递给基类,以确保在测试代码中仅使用接口上的那些方法。 我希望摆脱下面的类层次结构中显示的未经检查的强制转换警告。
public interface Intf<T> { ... }
public class Concrete<T> implements Intf<T>
public abstract class Base<T, I extends Intf<T>, C extends Concrete<T>> {
protected I x;
protected abstract Class<C> getImplClass();
@Before
public setUp {
C impl = getImplClass().newInstance();
...
x = (I) impl; // Unchecked Cast Warning Here
}
}
您可以直接声明
protected abstract Class<I> getImplClass();
并避免铸造。
您可以添加@SuppressWarnings("unchecked")
的类或方法之前。 但是请记住,这只会抑制这些警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.