Java類和成員上的一些方法實(shí)例代碼
isInstance和isAssignableFrom
obj instanceof Class
判斷obj是不是Class或者Class的子類的實(shí)例
clazz.isInstance(obj)
判斷obj能不能強(qiáng)制轉(zhuǎn)換成clazz類型,亦即obj是不是clazz或者clazz的子類的實(shí)例
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自帶的方式對對象進(jìn)行序列化時(shí),transient成員變量不會被序列化,比如銀行密碼這樣的敏感信息不允許序列化到磁盤或者在網(wǎng)絡(luò)上傳輸。
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);
}
}
總結(jié)
以上就是本文關(guān)于Java類和成員上的一些方法實(shí)例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
詳談Java中Object類中的方法以及finalize函數(shù)作用
下面小編就為大家?guī)硪黄斦凧ava中Object類中的方法以及finalize函數(shù)作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
springboot項(xiàng)目實(shí)現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter
這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
SpringMVC統(tǒng)一異常處理實(shí)例代碼
這篇文章主要介紹了SpringMVC統(tǒng)一異常處理實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
springBoot 創(chuàng)建定時(shí)任務(wù)過程詳解
這篇文章主要介紹了springBoot 創(chuàng)建定時(shí)任務(wù)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析
LoadBalancerClient 是 SpringCloud 提供的一種負(fù)載均衡客戶端,Ribbon 負(fù)載均衡組件內(nèi)部也是集成了 LoadBalancerClient 來實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析 LoadBalancerClient 接口源碼,感興趣的朋友跟隨小編一起看看吧2023-04-04
springcloud feign調(diào)其他微服務(wù)時(shí)參數(shù)是對象的問題
這篇文章主要介紹了springcloud feign調(diào)其他微服務(wù)時(shí)參數(shù)是對象的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot超詳細(xì)講解@Enable*注解和@Import
這篇文章主要介紹了SpringBoot?@Enable*注解和@Import,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

