isInstance和isAssignableFrom
obj instanceof Class
判斷obj是不是Class或者Class的子類的實例
clazz.isInstance(obj)
判斷obj能不能強制轉換成clazz類型,亦即obj是不是clazz或者clazz的子類的實例
clazz1.isAssignableFrom(clazz2)
如果clazz2和clazz1相同,或者clazz1是clazz2的父類則返回True,否則返回Flase
static class Parent{}static class Son extends Parent{}public static void main(String[] args) {Parent parent=new Parent();Son son=new Son();Assert.assertTrue(son instanceof Son);Assert.assertTrue(son instanceof Parent);Assert.assertFalse(parent instanceof Son);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成員變量不會被序列化,比如銀行密碼這樣的敏感信息不允許序列化到磁盤或者在網絡上傳輸。
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class Account implements Serializable{private static final long serialVersionUID = 2103161633120805900L;private String name;private transient String password;public Account(String n,String p){this.name=n;this.password=p;}@Override public String toString(){return "["+this.name+"]/t["+this.password+"]";}//序列化public static byte[] serialize(Object object) {ObjectOutputStream oos = null;ByteArrayOutputStream baos = null;try {baos = new ByteArrayOutputStream();oos = new ObjectOutputStream(baos);oos.writeObject(object);oos.close();byte[] bytes = baos.toByteArray();return bytes;}catch (Exception e) {e.printStackTrace();}return null;}// 反序列化public static Object deserialize(byte[] bytes) {ByteArrayInputStream bais = null;try {bais = new ByteArrayInputStream(bytes);ObjectInputStream ois = new ObjectInputStream(bais);Object rect=ois.readObject();ois.close();return rect;}catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) throws IOException {Account inst=new Account("orisun","123456");System.out.println("序列化前"+inst);byte[] datas=serialize(inst);Account inst2=(Account)deserialize(datas);System.out.println("序列化後"+inst2);}}總結
以上就是本文關於Java類和成員上的一些方法實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!