当前位置: 首页 > 面试题库 >

Java泛型-获取类?

甘祺
2023-03-14
问题内容

我有一个列表,程序是这样的:publicclassMyList<T>。有什么方法可以使用T变量获取类的名称(因此我可以从内部MyList知道T是否为String,Socket等)?

编辑:没关系,在这里找到了答案。


问题答案:

简短答案 :您不能。

长答案

由于使用Java实现泛型的方式,泛型T在运行时不会保留。您仍然可以使用私有数据成员:

public class Foo<T> 
{
    private Class<T> type;

    public Foo(Class<T> type) { this.type = type; } 
}

用法示例:

Foo<Integer> test = new Foo<Integer>(Integer.class);


 类似资料:
  • 如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或

  • 问题内容: 我在使用泛型时遇到麻烦。给出以下示例: 什么 ???应该 ? 不工作… 也不。 不工作… 如果有Java泛型专家,我需要帮助…:/ 问题答案: 由于类型擦除,您可能无法获得除外。你将不得不使用不安全的类型转换投下的-具体而言,将做的工作。

  • 问题内容: 背景 我曾经写过这种方法: 应该这样称呼它: 这很好用(尽管我在研究当前容易出错的问题时在这里的答案中已经看到)。 目前的情况 无论如何,现在我正在编写以下代码(在扩展javax.servlet.jsp.tagext.TagSupport的类中): 目的是可以这样称呼: 我的评估方法中的代码显然不起作用。的第二个参数应该是Class对象。这导致我: 我的问题 如何获得通用(返回)类型的

  • 问题内容: 我有一个抽象类: 我需要充实的孩子-每个孩子都有自己的孩子 我只找到一种解决方案,但需要编译器参数 这是最好的解决方案吗?没有我们可以做同样的事情吗? 问题答案: 实现此目的的类型安全但很简单的方法是传递令牌“编译器可以看到它的位置”: 如果您执行的是未经检查的强制转换,但您“知道自己在做什么”,并且希望编译器停止抱怨,则正确的方法是将非类型安全但您知道它们的工作位本地化。使用: (我

  • 问题内容: 我正在与一起工作,并且在更换单元格工厂时需要通过一个 我所在的班级是A,但我不知道如何使用“捕获”? 我试图创造 但IDEA显示警告 我尝试使用特定的类(例如String)代替“?” 同样,但没有任何帮助。 谁能向我解释如何使用此方法? 谢谢。 编辑: 我收集了一点点信息。该的应该是,但是,TreeTableColumn是我与原始类型创建工作(在库)。 使用原始类型回叫有效。但是还有其

  • 问题内容: 通常,我见过人们像这样使用类文字: 但是,如果类型是通用类型,例如List,该怎么办?这可以正常工作,但由于应将List参数化,因此发出警告: 那么为什么不添加一个<?>呢?好吧,这会导致类型不匹配错误: 我想像这样的事情会起作用,但这只是一个普通的语法错误: 如何获得Class >静态信息,例如使用类文字? 我可以使用,以摆脱在第一个例子中所造成的非参数使用列表,警告的,但我宁愿不要