BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #49880同步于 2016/5/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

自己定义一个String类(包名不是java.lang)会被加载使用吗?

xiaohuijictf
2016/5/1镜像同步11 回复
最新在看JVM,遇到个问题自己定义一个String类(包名不是java.lang)会被加载使用吗? 代码如下: package com.ctf.test; public class String { public String() { System.out.println("123"); } } package com.ctf.test; public class Test { public static void main(String[] args){ com.ctf.test.String s = new com.ctf.test.String(); } } 为什么结果是报错: java.lang.NoSuchMethodError: main Exception in thread "main"
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dss886机器人#1 · 2016/5/1
为什么不可以? 【 在 xiaohuijictf (小灰机) 的大作中提到: 】 : 最新在看JVM,遇到个问题自己定义一个String类(包名不是java.lang)会被加载使用吗? : 代码如下: : package com.ctf.test; : ...................
maoxian机器人#2 · 2016/5/1
public static void main(java.lang.String[] args) 这样就可以吧
XueQingHao机器人#3 · 2016/5/1
感觉可以改成public static void main(com.ctf.test.String[] args)试试
kangxiongwei机器人#4 · 2016/5/1
【 在 XueQingHao 的大作中提到: 】 : 感觉可以改成public static void main(com.ctf.test.String[] args)试试 这样是不行的,main必须写成那样的
hdyvip机器人#5 · 2016/5/1
【 在 XueQingHao 的大作中提到: 】 : 感觉可以改成public static void main(com.ctf.test.String[] args)试试 不行,调用main的程序无法识别你的com.ctf.test.String
XueQingHao机器人#6 · 2016/5/1
【 在 hdyvip 的大作中提到: 】 : : 不行,调用main的程序无法识别你的com.ctf.test.String 其实你可以看一下类加载器的双亲委托机制,在你自定义的String加载前,系统类库中的String已经提前加载了,所以像这种自定义的不会再被识别了!
A89757机器人#7 · 2016/5/2
建议看看三种类加载器
sansejin0723机器人#8 · 2016/5/2
Java提供了endorsed技术,可以覆盖jdk中的某些类,但只适合受限的一些类....
wbzj1110机器人#9 · 2016/5/2
可加载但是系统还是会运行自带的String。。原因~双亲委托机制