【问题标题】:Converting String to Generics type argument in Java在Java中将字符串转换为泛型类型参数
【发布时间】:2021-01-28 17:07:58
【问题描述】:

我想编写一个通用程序,它接收来自用户的字符串并使用反射创建该类型的容器。这应该是

public static void main(String []args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the type you want to use ");
    String typeName = scanner.nextLine();
    Set<????> mySet = new HashSet(); 
}

我应该在 ????部分?这可能吗?

【问题讨论】:

  • “我应该在 ???? 部分放什么?”你想用mySet做什么?
  • 简而言之,像Set&lt;String&gt; 这样的东西在运行时就变成了Set。 type 参数只是语法糖。它只是编译器查看并阻止您做愚蠢事情的东西。

标签: java generics reflection


【解决方案1】:

我不太确定,你试图达到什么目标。我假设,在您创建 SettypeName 之后,代码将继续运行。
关于泛型。代码编译后,关于泛型的所有信息都消失了。在运行时,当您为程序创建了typeName 类型时,它只是一个对象。
泛型只是为了在编程时很清楚,您正在处理哪种类型的Object,因此您不需要强制转换并且编译器可以检查这通常是否有效。
如果您想稍后在对象上调用某些内容,则需要使用反射,除非您提供了一些更精确的信息,即您正在处理的是哪种Object

最简单的就是Object

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 2021-09-23
    • 2021-10-25
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多