简体   繁体   English

如何在没有警告的情况下转换java.lang.Class <?>类型的对象?

[英]How to cast objects of type java.lang.Class<?> without warnings?

I've got some code that looks like this: 我有一些看起来像这样的代码:

Class<?> clazz = Class.forName(someClassName);
if(TargetClass.class.isAssignableFrom(clazz))
{
    Class<? extends TargetClass> narrowClass = (Class<? extends TargetClass>)clazz;
    // Use the narrowClass for stuff
}

This code give me an "unchecked cast" warning, probably because the isAssignableFrom check doesn't count as a "check". 这段代码给了我一个“未经检查的强制转换”警告,可能是因为isAssignableFrom检查不算作“检查”。 It's not possible to use instanceof , here, because you can't check the runtime type due to type-erasure. 这里不可能使用instanceof ,因为由于类型擦除而无法检查运行时类型。

Is there any way to write this code without a compiler warning? 有没有办法在没有编译器警告的情况下编写此代码? Or is the only way to get rid of the warning to add @SupprssWarnings("unckeched") to the method? 或者是摆脱警告的唯一方法是将@SupprssWarnings("unckeched")到方法中?

Use the following method: 使用以下方法:

 Class<? extends TargetClass> narrowClass = clazz.asSubclass(TargetClass.class);

Here is a Link to the documentation. 这是文档的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在没有编译器警告的情况下将带有泛型的java.lang.Class类型的变量初始化为Collection? - How to initialize a variable of type java.lang.Class to Collection with generics without compiler warnings? “无法转换为java.lang.Class”,即:哪种类型不是类 - “Cannot be cast to java.lang.Class”, namely: which type is not a class 如何将 java.lang.Class 转换为 POJO 实体 class? - How to cast java.lang.Class to POJO Entity class? 如何使用也键入的类型参数创建java.lang.Class? - How to create java.lang.Class with type parameter that is also typed? How to fix java.lang.ClassCastException: java.lang.Class cannot be cast to java.util.Map - How to fix java.lang.ClassCastException: java.lang.Class cannot be cast to java.util.Map 未选中的强制转换:&#39;java.lang.Class <capture<?> &gt;&#39;to&#39;java.lang.Class <T> - Unchecked cast: 'java.lang.Class<capture<?>>' to 'java.lang.Class<T> Java:ClassCastException-无法将java.lang.Class强制转换为 - Java: ClassCastException - java.lang.Class cannot be cast to 引起:java.lang.ClassCastException:使用Generic Type时,libcore.reflect.ParameterizedTypeImpl无法强制转换为java.lang.Class - Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class when use Generic Type 获取对象java.lang.Class <T> 参数类型的对象,而无需在q_uestion中构造类? - Obtaining the object the java.lang.Class<T> object for a parameterized type without constructing the class in q_uestion? “java.lang.Class”类的对象在哪里 - Where do objects of "java.lang.Class" class reside
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM