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
0
投稿

猜你喜欢

  • C#使用FileStream复制一个任意文件

    2022-04-17 19:55:17
  • 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
  • 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
  • Java数字格式类(NumberFormat类和DecimalFormat类)用法详解

    2022-11-14 14:54:02
  • spring异步service中处理线程数限制详解

    2021-09-02 23:20:12
  • C#给Word不同页面设置不同背景

    2021-07-20 01:28:16
  • 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
  • C#中使用UDP通信的示例

    2022-11-19 21:09:07
  • Java简单计时的实现案例(可以用来限时循环)

    2023-02-01 21:39:19
  • 详解SpringSecurity中的Authentication信息与登录流程

    2022-01-20 21:36:22
  • 解决springboot URL带有斜杠的转义字符百分之2F导致的400错误

    2022-05-08 07:27:32
  • 基于Spring Boot应用ApplicationEvent案例场景

    2023-08-17 22:38:12
  • asp之家 软件编程 m.aspxhome.com