【问题标题】:How can I pass Data type(like int,char,.....) Dynamically?如何动态传递数据类型(如 int、char、.....)?
【发布时间】:2014-03-07 17:18:42
【问题描述】:

我正在尝试创建动态类。现在我想从控制台读取字段数据类型,我该怎么做。这里我将一个作为字段的数据类型传递,另一个是字段名称。

下面是我的代码:

1. Map <Class <?>, String> fields = new HashMap <Class<?>, String> ();

2. Scanner s=new Scanner(System.in);
3. System.out.println("enter field Name");
4. String a=s.nextLine();  //Ex: id (I passed "id" as field name)

5. fields.put(int.class,a);  //here how can I pass int.class from console

O/p:

int id;

在第 4 行中,我从控制台读取字符串并放入 map(第 5 行)。

现在我想从控制台读取“int.class”类型以放入我的地图中。

如果我在第 6 行中像上面那样通过,它正在创建字段(int id)。但是我怎样才能动态地传递那个我怎样才能从控制台读取 .class 类型

【问题讨论】:

  • 你不能用原语(int,float)做到这一点。
  • 我得到了像上面一样的 o/p 但现在我想从控制台而不是硬代码将数据类型传递给我的字段名称。谢谢

标签: java class collections map


【解决方案1】:

Class.forName(String className) 但这不适用于原语。请改用java.lang.Integer

【讨论】:

  • 我会给出什么意见。 Integer.class,如果我这样给出它会抛出 ClassNotFound Exception
  • 如我所说:Class.forName("Java.lang.Integer")
  • 再次发生同样的异常
  • 我真的不知道你想在这里做什么......创建一个包含控制台提供的类的名称作为键和类本身作为值的映射?那么,a 是类的名称对吗?所以:5.fields.put(Class.forName(a), a) 应该可以工作。
  • 这样我也通过了,但是发生了异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多