【类反射】反射示例(模拟Instanceof的功能)

来源:互联网 发布:德军总部剧情知乎 编辑:程序博客网 时间:2024/06/05 06:11

需求:

通常我们会判断两个对象是否属于同一个类,可以由某个对象.instance(另一个对象)进行比较。此时如何模拟出这种功能呢?

思路:

(1)此方法有两个参数,返回值类型为boolean类型。(2)第一个参数可以确定为当前对象,第二个参数如何确定? (3)因为我们做的是工具类,需要通用性强,在以后使用的时候传入任何对象都可以比较,但是不确定传入的是哪个类的对象! (4)不确定是哪个类如何确定其对象? (5)这里我们可以让使用者传入其类全名,通过类反射得到其对象,就可以直接使用了。 

MyInstanceof工具:

    private static boolean myInstanceof(Object obj, String name)  {        try {            Class clazz = Class.forName(name);            boolean boo=clazz.isInstance(obj);//判断对象obj是否是模板clazz刻出来的            return boo;        } catch (ClassNotFoundException e) {            e.printStackTrace();        }        return false;    }

测试类:

package cn.hncu.reflect.test;/** * 模拟Instanceof,判断某两个实例是否相等 *  *@author <a"283505495@qq.com">lxd</a> *@version 1.0 2017-4-15 下午2:28:24 *@fileName MySimulateInstanceof.java */public class MySimulateInstanceof {    public static void main(String[] args) {        //1、测试Instanceof        A a=new A();        //正常的方式判断是否相等        if(a instanceof A){            System.out.println("true");        }else{            System.out.println("false");        }        //自己写的工具测试        if(myInstanceof(a,"cn.hncu.reflect.test.hello.A")){            System.out.println("yes");        }else{            System.out.println("no");        }    }//用到的A类class A{    int x=5;}

运行结果:

这里写图片描述

0 0