自己写的String类能够被加载吗?

尝试加载自己编写的String类会导致Java应用程序执行失败,这是由于类加载的双亲委托机制。该机制确保系统类优先于用户自定义类加载,避免安全问题和责任混淆。自定义的String类与系统类同名将不被加载,如果在不同包下创建java.lang.String类,也会因主方法参数类型错误导致编译报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写的String类能够被加载吗?

     答:自己尝试了一下, 不能被加载, 如果你引用了自己写的String类, 则该住房那个执行的绿色三角就会消失, 是不能执行的。

 

在上面引入了interview.String、左边的三角形就消失了;  右边没有引入,  就有可执行三角。

为什么呢?这是类加载中的双亲委托机制。

就是说java虚拟机在加载一个类的时候,  应用程序类加载器会委托扩展类加载器加载, 扩展类加载器会委托根加载器加载,  这样做的目的是什么呢?当然是为了保证程序的安全, 它就是要保证你用的和系统类同名的类一定是系统自己提供的, 而不是你自己写的, 如果你要搞个其他类, 你干啥要和系统提供的类同名呢?

这样做的目的就是不想背锅, 你他娘的不要说用了某个外部的String类,然后程序出问题了, 怪jdk的开发人员。。

也就是说你写的类不能与jdk自带的类同名, 同名就不会被加载。

那如果是新开一个project, 创建一个java.lang的package, 然后新建一个String类, 这样行吗

emmm... 这样的话, 如果我们直接创建String类型, 则会直接引用我们写的String类型, 这里最多的一个问题就在于当我们写主方法的时候, 即public static void main(String[] args)时, 这里的String也是引用我们写的类, 所以说系统会检测出主方法不对, 编译报错

虽然我们确定我们写的就是这样, 但是由于引用的String位置错了, 所有还是不行的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值