java - 使用泛型的 JUnit 测试中的问题

标签 java generics junit

在我的实用方法中:

public static <T> T getField(Object obj, Class c, String fieldName) {
    try {
        Field field = c.getDeclaredField(fieldName);
        field.setAccessible(true);
        return (T) field.get(obj);
    } catch (Exception e) {
        e.printStackTrace();
        fail();
        return null;
    }
}

线

return (T) field.get(obj);

给出警告“类型安全:未经检查的从对象到 T 的转换”; 但我无法对类型参数 T 执行 instanceof 检查, 那我应该在这里做什么?

最佳答案

注释@SuppressWarnings 将停止编译器报告此警告。当像这样使用反射时,我不认为有任何方法可以摆脱编译器警告。类似于以下内容:

Field field = c.getDeclaredField(fieldName);
field.setAccessible(true);

@SuppressWarnings(value="unchecked")
T t = (T) field.get(obj);

return t;

关于java - 使用泛型的 JUnit 测试中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2498015/

相关文章:

java - 传输对象、Spring MVC、架构

generics - JSX 节点中的 TypeScript 类型参数

ios - 为什么 Swift 推断出元类型 'Any.Type' 而不是类型 'Any' ?

java - 从 jUnit 测试调用方法

junit - 我应该拆分方法以便在 JUnit 中重用吗?

java - 如何在 Spring Integration 中将服务分配给消息驱动适配器?

java - 通过 Java 应用程序启动外部 Jar

java - 如何从欢迎jsp页面获取web.xml中servlet的初始化参数?

java - 泛型数组转换

java - 模拟对属性文件的依赖