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

本文介绍了一个自定义工具MyInstanceof,用于模拟Java中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"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;
}

运行结果:

这里写图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值