原文地址为:
【类反射】反射示例(模拟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的功能)