【问题标题】:Pass class with parameter into Class<T>将带参数的类传递给 Class<T>
【发布时间】:2020-09-22 02:52:44
【问题描述】:

有没有一种方法可以将带参数的类类型传递给接受Class&lt;T&gt; 的方法?

假设我有这个方法:

public T getProperty(类类型)

给定方法getProperty,它返回我们传递的任何类型,有没有办法我可以通过参数传递像Map 这样的类?可以这样说:

getProperty(Map.class)

不幸的是,上面的代码 sn-p 给了我编译错误。虽然使用Map.class 会起作用,但我想消除通用警告并使用强类型参数。

【问题讨论】:

  • 如果没有产生警告的强制转换,则无法完成此操作,尽管您可以抑制警告。 (您可以重新设计 getProperty,但这在上下文中听起来不太合理。)
  • 预期的答案。我只是希望有一种方法,但看起来这是 Java 的限制之一。谢谢大佬!

标签: java generics


【解决方案1】:

其实使用强类型参数是没有意义的。因为java会在运行时擦除类型参数。各种Map都指同一个Class Object。

即使可以,getProperty(Class type) 方法无论是通过Map.class 还是Map&lt;String,String&gt;.class 都没有区别。所以它可以做的最好的事情就是返回一个原始类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 2021-12-30
    • 1970-01-01
    • 2017-01-05
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多