时间:2021-05-20
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类和成员上的一些方法实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在java中,可以根据Class类的对象,知道某个类(接口)的一些属性(成员,方法,注释,注解)等。由于最近的工作中用到了这些,其中需要在代码中格局反射知道某些
java配置主要靠java类和一些注解,比较常用的注解有:@Configuration:声明一个类作为配置类,代替xml文件@Bean:声明在方法上,将方法的返
本文实例分析了java中成员变量与局部变量区别。分享给大家供大家参考。具体分析如下:成员变量:在这个类里定义的私有变量,属于这个类。创建以及使用成员变量复制代码
参考资料《Java编程思想》,关于含有基类的导出类,其成员的初始化过程是一个容易让人困惑的地方,下面通过具体的实例进行讲解,代码取自《Java编程思想》,代码如
使用对象访问类中的成员:对象名.成员变量;对象名.成员方法();成员变量的默认值:具体实例代码:publicclassStudentTest_01{public