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

原文地址为: 【类反射】反射示例(模拟Instanceof的功能)

需求:

通常我们会判断两个对象是否属于同一个类,可以由某个对象.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"[email protected]">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;
}

运行结果:

这里写图片描述


转载请注明本文地址: 【类反射】反射示例(模拟Instanceof的功能)

猜你喜欢

转载自blog.csdn.net/zhengxiuchen86/article/details/80844353