恢复丢失的类型,同时避免"未选中的转换"警告



我有一个对象,其中通用T的类型在某个时候通过一个巨大的接口链丢失。我想知道是否可以使用一个函数通过检查类型来重新获得某种类型安全性:

private T metaData; // type of T is lost
public <R> R getMetaData(Class<R> className) {
    assert className.isInstance(metaData);
    return (R) metaData;
}

但是,此实现会产生"未检查的转换:"T"到"R"警告。是否有避免此警告的实现,或者是唯一禁止此警告的解决方案?

您不必使用 () 进行R,您可以直接使用该Class。喜欢

return className.cast(metaData);

这不会在这里引起任何警告。

最新更新