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类和成员上的一些方法实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是用方法来实现的,属性只不过提供了相应的数据。 一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回值类型,其结构如图 1 所示。 图 1 方法组成元素 成员方法一旦被定义,便可以在程序中多次调用,提高了编程效率。声明成员方法的语法格式如下: 注意:上述语法中,中括号“[]”中的部分
问题 你想创建类和实例的方法。 解决方案 类方法 class Songs @_titles: 0 # Although it's directly accessible, the leading _ defines it by convention as private property. @get_count: -> @_titles constructor: (@
本文向大家介绍Java中StringUtils工具类的一些用法实例,包括了Java中StringUtils工具类的一些用法实例的使用技巧和注意事项,需要的朋友参考一下 StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 Null
本文向大家介绍java中的 toString()方法实例代码,包括了java中的 toString()方法实例代码的使用技巧和注意事项,需要的朋友参考一下 前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据。 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas 形式的集合处理。 处理要求把集合数
本文向大家介绍python的类变量和成员变量用法实例教程,包括了python的类变量和成员变量用法实例教程的使用技巧和注意事项,需要的朋友参考一下 本文实例形式讲解了python的类变量和成员变量用法,对于Python程序设计有一定的参考价值。分享给大家供大家参考。具体如下: 先看看下面这段代码: 这里,val1是类变量,可以由类名直接调用,也可以有对象来调用; val2是成员变量,可以由类的对象
为什么我们不能在子类B中声明一个实例方法,它与父类a中的静态方法共享相同的签名? 在上面的代码中,由于A没有该名称的实例方法,并且由于Java允许对象访问静态方法,所以指向B的类型为A的对象A可以调用它中存在的静态方法(类A)。但是编译器抛出一个错误“实例方法不能重写静态方法”为什么? 注意:我可以理解,如果一个类不允许两个方法使用相同的方法名,即使其中一个是实例,另一个是静态的。但是我不明白为什