Java类和成员上的一些方法实例代码
作者:Orisun 发布时间:2022-03-15 10:47:31
标签:java,isInstance,isAssignableFrom
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


猜你喜欢
- 本文实例为大家分享了C# this关键字的四种用法,供大家参考,具体内容如下用法一 this代表当前实例,用this.显式调用一
- 前言最近写了一篇博客是关于 使用Jenkins来构建SVN+Maven项目 ,这里使用的的代码版本工具是SVN,但是事实上也有很多公司使用G
- Linux Hadoop 2.7.3 安装搭建Hadoop实现了一个分布式文件系统(Hadoop Distributed File Syst
- DataTableDataTable 是 C# 中常用的一种数据表格类型,它类似于数据库中的表格,可以用来存储和处理数据。DataTable
- 上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html、xml和json这三种
- 本文为个人理解,不保证完全正确。官方文档中将双冒号的用法分为4类,按照我的个人理解可以分成2类来使用。官方文档官方文档中将双冒号的用法分为了
- WPF 如何实现简单放大镜框架使用.NET40;Visual Studio 2019;实现此功能需要用到 VisualBrush&
- 说起双亲委派模型,不得不说一下类加载器。类加载器是什么?当我们编译Java类时,JVM会创建与平台和机器无关的字节码。字节码存储在.clas
- 注解作用注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有
- 一、什么是JMSJMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(M
- 最近公司因为短信接口被盗刷的比较严重,需要做一个类似于淘宝的滑动验证,用于特定环境,以增加一层保障。拿到需求首先想到的是自定义ViewGro
- using Word;下面的例子中包括C#对Word文档的创建、插入表格、设置样式等操作:(例子中代码有些涉及数据信息部分被省略,重要是介绍
- 1.获取String osName =System.getProperties().getProperty(&quo
- 1.先在build.gradle(Module)下添加引用viewPager2的库implementation 'androidx.
- 前言在我们的工作中,经常会遇到需要在普通类中使用放在Spring容器中的类的情况。最常见的情况大概就是有一个类他的属性的是通过spring的
- 今天上班中午吃饱之后、逛博客溜达看到一道题:数组反转 晚上回家洗完澡没事情做,就自己练习一把。public static cla
- 目录1 简介2 项目整合2.1 JWT工具类2.2 JWT的过滤器2.3 Security的配置2.4 获取JWT的Controller3
- 之前百度,google了很多,发现并没有介绍mongodb生产环境如何配置的文章, 当时想参考下都不行, 所以写篇文章,大家可以一块讨论下.
- 在绝大多数android机器etc路径下存放一个的apns-conf.xml文件,表示当前机器使用的apn信息通过root机器可以push出
- 通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成:Socket编程:实现PC和Emulato