我手头有一个Java基本类型:

Class<?> c = int.class; // or long.class, or boolean.class

我想获得此类的默认值-具体来说,如果未初始化,则将值分配给此类型的字段。例如,0表示数字,false表示 boolean 值。

有通用的方法可以做到这一点吗?我尝试了这个:
c.newInstance()

但是我得到了InstantiationException,而不是默认实例。

最佳答案

Guava 图书馆已经包含:
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Defaults.html

调用defaultValue将为任何原始类型(由JLS指定)返回默认值,对于任何其他类型返回null。

像这样使用它:

import com.google.common.base.Defaults;
Defaults.defaultValue(Integer.TYPE); //will return 0

10-05 21:12
查看更多