难题求解

今天和同事讨论一道面试题:“是否有办法禁用String的equals方法?”

有两个一下子就能想到的办法:

1,修改源码重新打包。
2,利用类加载器加载一个虚假的类。(此方法如果我没记错的话,应该是不可行的,java虚拟机上有详细介绍)

然后如果不用这两种办法,而是在代码级别是否可以解决呢?

我首先想到的就是是否可以利用String类在JVM中的class对象来解决,其实也就是反射机制。我在Method类里找到了一个setAccessible方法,尝试了下:

String test = "hello world!";

Method[] methods = String.class.getMethods();

for(Method method : methods) {
if(method.getName().equals("equals")) {
System.out.println(method.isAccessible());
method.setAccessible(false);
}
}
System.out.println(test.equals("hello world!"));


结果证明这个方法是不可行的,我查找了些资料,setAccessible其实是设置当JVM做反射时是否做安全检查,而不是该方法是否能够被访问。


我就此郁闷了,想不出还有什么方向可以考虑的。

求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值