繁体   English   中英

同时指定接口和具体类的泛型得到未经检查的强制转换警告

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

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