前面学习Class#isPrimitive()方法的时候提到,以下类型均是原始类型:
java.lang.Boolean#TYPE
java.lang.Character#TYPE
java.lang.Byte#TYPE
java.lang.Short#TYPE
java.lang.Integer#TYPE
java.lang.Long#TYPE
java.lang.Float#TYPE
java.lang.Double#TYPE
java.lang.Void#TYPE
原始类型的包装类除Void外,都实现了Serializable和Comparable接口。
下面逐个学习。
Void
该类源码很短:
public final class Void {
public static final Class<Void> TYPE = lookupType();
private static native Class<Void> lookupType();
private Void() {}
}
Void类不能被实例化,只是一个表示void关键字的占位符。
最常见的用法是覆写AsyncTask时,如下:
public class MyTask extends AsyncTask<Void, Integer, String> {
@Override
protected String doInBackground(Void... voids) {
return null;
}
}
更进一步理解,参考java.lang.Void 与 void的比较及使用
Boolean
boolean的包装类。关于boolean占用多少字节,参考Java中boolean类型到底占用多少个字节?
下面是比较有价值的代码:
public final class Boolean implements java.io.Serializable,
Comparable<Boolean>
{
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
public static final Class<Boolean> TYPE = (Class<Boolean>) boolean[].class.getComponentType();
private final boolean value;
public Boolean(boolean value) {
this.value = value;
}
public Boolean(String s) {
this(parseBoolean(s));
}
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
public boolean booleanValue() {
return value;
}
/*这里注意:通过该方法得到的只有TRUE或者FALSE这两个对象
如: Boolean A = Boolean.valueOf(true);
Boolean B = Boolean.valueOf(true);
Boolean C = new Boolean(true);
则 A==B, A!=C
一般没有特殊需求,尽量使用该方法得到Boolean对象。
*/
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return parseBoolean(s) ? TRUE : FALSE;
}
...
}
Number
Byte、Short、Integer、Long、Float、Double都继承自Number。
该类提供了转换为这几个包装类对应的原始类型的方法。
public abstract class Number implements java.io.Serializable {
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract double doubleValue();
public byte byteValue() {
return (byte)intValue();
}
public short shortValue() {
return (short)intValue();
}
private static final long serialVersionUID = -8742448824652078965L;
网友评论