Java类和成员上的一些方法实例代码
作者:Orisun 时间:2022-03-15 10:47:31
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);
}
}
来源:http://www.cnblogs.com/zhangchaoyang/articles/5094957.html
标签:java,isInstance,isAssignableFrom
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C#使用FileStream复制一个任意文件
2022-04-17 19:55:17
![](https://img.aspxhome.com/file/2023/3/86983_0s.png)
Java深入学习图形用户界面GUI之创建窗体
2022-11-17 02:40:36
C#中缓存System.Web.Caching用法总结
2021-09-05 04:41:11
C#实现的json序列化和反序列化代码实例
2022-04-05 22:24:08
C#使用smtp发送带附件的邮件实现方法
2022-11-03 17:53:39
Java RateLimiter的限流详解
2023-01-06 17:14:12
![](https://img.aspxhome.com/file/2023/9/63669_0s.png)
c# 基于任务的异步编程模式(TAP)的异常处理
2023-08-03 15:44:06
C#使用Ado.net读取Excel表的方法
2022-04-22 02:01:47
一文带你了解RabbitMQ消息转换器
2023-11-15 23:22:28
![](https://img.aspxhome.com/file/2023/4/64384_0s.jpg)
Java数字格式类(NumberFormat类和DecimalFormat类)用法详解
2022-11-14 14:54:02
![](https://img.aspxhome.com/file/2023/1/68711_0s.png)
spring异步service中处理线程数限制详解
2021-09-02 23:20:12
C#给Word不同页面设置不同背景
2021-07-20 01:28:16
![](https://img.aspxhome.com/file/2023/4/116504_0s.png)
Java基于servlet监听器实现在线人数监控功能的方法
2021-08-19 11:38:24
Java反射机制详解_动力节点Java学院整理
2022-08-19 18:10:13
Apache Calcite进行SQL解析(java代码实例)
2023-06-26 23:11:59
![](https://img.aspxhome.com/file/2023/2/63322_0s.png)
C#中使用UDP通信的示例
2022-11-19 21:09:07
![](https://img.aspxhome.com/file/2023/0/106520_0s.png)
Java简单计时的实现案例(可以用来限时循环)
2023-02-01 21:39:19
详解SpringSecurity中的Authentication信息与登录流程
2022-01-20 21:36:22
![](https://img.aspxhome.com/file/2023/4/78864_0s.png)
解决springboot URL带有斜杠的转义字符百分之2F导致的400错误
2022-05-08 07:27:32
![](https://img.aspxhome.com/file/2023/3/75703_0s.png)
基于Spring Boot应用ApplicationEvent案例场景
2023-08-17 22:38:12
![](https://img.aspxhome.com/file/2023/0/96120_0s.png)