java - 使用java反射的问题

标签 java reflection

假设我想写一个函数,它会创建一个从某个指定类型T到String的HashMap,例如,一个从Integer到String的HashMap如下:

HashMap<Integer, String> myHashMay = new HashMap<Integer, String>() ;

我想灵活地指定类型 T。所以我写了一个函数:

void foo(Class<?> myClass) {
    HashMap<myClass, String> myHashMay = new HashMap<myClass, String>();
    .......
}

因此,如果我调用 foo(Integer.class),将在该函数内创建一个从 Integer 到 String 的 HashMap。显然上面的 foo 函数甚至不能编译。谁能给我一些关于如何使用给定的函数签名正确编写这样的函数的提示。

谢谢,

最佳答案

<T> void foo(Class<T> myClass) {
    HashMap<T, String> myHashMay = new HashMap<T, String>();
    ...
}

编辑: 然而,具有这样签名的方法似乎并不是很有用,因为 T 仅用于编译时的类型检查。我能想象的只有一个场景可以使用它:

<T> void foo(Class<T> myClass) {
    HashMap<T, String> myHashMay = new HashMap<T, String>();
    ...
    try {
        T key = myClass.newInstance();
        myHashMay.put(key, "Value");
    } catch (Exception ex) { ... }
    ...
}

关于java - 使用java反射的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105964/

相关文章:

java - 如何将其转换为速度模板?

java - 使用 OkHttp 3 发送原始 POST 请求

java - Kotlin 反射问题

c# - 创建一个匹配反射类型的方法

ios - 项目 Objective-c 中的类列表

c# - 如何将方法注入(inject) .Net Framework 中的自动属性

java - 如何在不删除注释的情况下保存 Bukkit 的默认配置?

java - Spring DI 中的通用工厂方法

java - Scala,无法实现通用的java方法

reflection - 按名称调用其他包中的方法?