Java类和成员上的一些方法实例代码
isInstance和isAssignableFrom
objinstanceofClass
判断obj是不是Class或者Class的子类的实例
clazz.isInstance(obj)
判断obj能不能强制转换成clazz类型,亦即obj是不是clazz或者clazz的子类的实例
clazz1.isAssignableFrom(clazz2)
如果clazz2和clazz1相同,或者clazz1是clazz2的父类则返回True,否则返回Flase
staticclassParent{
}
staticclassSonextendsParent{
}
publicstaticvoidmain(String[]args){
Parentparent=newParent();
Sonson=newSon();
Assert.assertTrue(soninstanceofSon);
Assert.assertTrue(soninstanceofParent);
Assert.assertFalse(parentinstanceofSon);
Assert.assertTrue(Son.class.isInstance(son));
Assert.assertFalse(Son.class.isInstance(parent));
Assert.assertTrue(Parent.class.isInstance(son));
Assert.assertTrue(Son.class.isAssignableFrom(Son.class));
Assert.assertFalse(Son.class.isAssignableFrom(Parent.class));
Assert.assertTrue(Parent.class.isAssignableFrom(Son.class));
}
Modifier.isTransient(field.getModifiers())
在使用Java自带的方式对对象进行序列化时,transient成员变量不会被序列化,比如银行密码这样的敏感信息不允许序列化到磁盘或者在网络上传输。
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;
publicclassAccountimplementsSerializable{
privatestaticfinallongserialVersionUID=2103161633120805900L;
privateStringname;
privatetransientStringpassword;
publicAccount(Stringn,Stringp){
this.name=n;
this.password=p;
}
@Override
publicStringtoString(){
return"["+this.name+"]\t["+this.password+"]";
}
//序列化
publicstaticbyte[]serialize(Objectobject){
ObjectOutputStreamoos=null;
ByteArrayOutputStreambaos=null;
try{
baos=newByteArrayOutputStream();
oos=newObjectOutputStream(baos);
oos.writeObject(object);
oos.close();
byte[]bytes=baos.toByteArray();
returnbytes;
}
catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
//反序列化
publicstaticObjectdeserialize(byte[]bytes){
ByteArrayInputStreambais=null;
try{
bais=newByteArrayInputStream(bytes);
ObjectInputStreamois=newObjectInputStream(bais);
Objectrect=ois.readObject();
ois.close();
returnrect;
}
catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
publicstaticvoidmain(String[]args)throwsIOException{
Accountinst=newAccount("orisun","123456");
System.out.println("序列化前"+inst);
byte[]datas=serialize(inst);
Accountinst2=(Account)deserialize(datas);
System.out.println("序列化后"+inst2);
}
}
总结
以上就是本文关于Java类和成员上的一些方法实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!