【问题标题】:Primitive type classes (java)原始类型类 (java)
【发布时间】:2021-03-08 07:07:12
【问题描述】:

我想获得一个与对象数组的类相对应的类数组。我写了这段代码:

Object[] parameters = new Object[]{...};

Class[] classes = new Class[parameters.length];
for(int i = 0; i < parameters.length; i++){
  classes[i] = parameters[i].getClass();
}

但是,我需要原始类型,例如 int 或 float 写为 float.classint.class 可以,但我得到的是 java.lang.Floatjava.lang.Integrer。有什么我可以做的吗?

【问题讨论】:

  • 不是真的,但谢谢。我确实需要这个来反思。
  • Object[] 中的值永远不能是原始类型。只有Float/Integer/... 会出现,您无法在此处获得float/int/ ...。
  • @Progman:他们希望int.classparameters[i].getClass() 返回(其中parametersObject[])。这显然永远不会发生,因为 Object[] 不能保存原始值。

标签: java


【解决方案1】:

Object[] 永远不能直接包含原始类型。它只能包含包装器类型Integer/Float/...

这就是为什么您的代码中的classes[i] 永远不会包含int.class 的原因。

请注意,Object[] 可以包含 int[],而 int[] 又可以包含 int 值(并且只有 int 值),但这似乎不是你的正在寻找。

【讨论】:

  • 有没有办法从包装器类型中获取原始类型?
  • @xImperiak:不幸的是,在 JDK 中没有可以为您提供这一功能的单行解决方案,这就是 many utility libraries have such a function 的原因。
猜你喜欢
  • 2013-02-02
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多