java - 警告 : Type safety: Unchecked cast from Object to PK

标签 java object warnings

如何删除“id = (PK) m.invoke(obj, (Object []) null);”中的警告

    private PK getId(T obj) {
    PK id = null;
    for (Field f : type.getDeclaredFields()) {
        if (f.getAnnotation(Id.class) != null) {
            String name = f.getName();
            String method = "get" + name.substring(0, 1).toUpperCase() + name.substring(1);
            try {
                Method m = type.getDeclaredMethod(method, (Class<?>) null);
                id = (PK) m.invoke(obj, (Object []) null);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return id;
}

最佳答案

我假设 PK 是你的类中的通用类型

class MyClass<PK> {

由于 Java 类型删除,类型 PK 在运行时不可用。但是如果你在你的构造函数中接受 Class<PK>例如,那么您可以通过调用 klass.cast(...) 来解决这个问题

class MyClass<PK> {
    private final Class<PK> keyClass;
    MyClass(Class<PK> keyClass) {
         this.keyClass = keyClass;
    }

    PK getKey() {
        return keyClass.cast(...);
    }
}

如果出于某种原因您无法获得对 PK 的实际运行时类型的引用,那么您除了抑制警告之外别无选择。

关于java - 警告 : Type safety: Unchecked cast from Object to PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10588075/

相关文章:

java - 我在使用 Telegram Bot API webhook 支持和通过 bouncycaSTLe 生成的自签名证书时遇到问题

javascript - 如何在对象内部创建方法

arrays - MongoDB:如何获取查找集合的对象值

javascript - 使用 WebStorm 将 AngularJS Seed 项目提交到 GIT 时出现警告

pcap_loop 的最后一个参数中的编译器警告。指向不同大小的整数

Java:方法中的双扫描仪

java - mergeSort ArrayIndexOutOfBoundsExecption

javascript - 变量返回空

php - PHP默认如何确定POST方法超过1000个变量?

java - GWT i18n 更改语言环境