java缺省包详解_Java在其它包中无法引用缺省包中的类

本文详细介绍了Java中其他包无法引用缺省包中的类这一现象,并解释了背后的原因。建议开发者避免将类放在缺省包中,若已发生此情况,可通过反射机制来访问缺省包中的类。文章给出了使用反射调用缺省包类方法的代码示例。
摘要由CSDN通过智能技术生成

1、现象

1.1 问题场景

最近,在写测试代码时,将一个类(这里暂且称为ClassA)放在在缺省包中,也就是说,直接放在了src目录下,没有创建包。然后,将这个类打入了jar文件,提供给另外的工程(这里称为ProjA)用,结果发现了非常神奇的现象。

在ProjA中,如果从缺省包中引用ClassA,可以引用到。但是,如果创建一个包,在包中引用ClassA就会发现,引用不到,报错类找不到。第一反应是,是不是需要import啊?想写一个import语句。但是,由于ClassA放在缺省包中,也没法通过import包的方式引用这个类(因为没有包名)。这就比较尴尬了。

搜了下,发现不只是jar包中存在这个问题。这是java的一个普遍现象:Java在其它包中无法引用缺省包中的类。

1.2 机制解析

其实,细想一下,这个也比较好理解。因为如果在包中不指定报名引用一个类,一般是引用同一个包中的类。直觉上,我们可能会认为,如果在同一个包中找不到的这个类,java应该取缺省包看看,找下缺省包中是否能够找到这个类。然而,令人失望的是java现在没有这个机制(当然,也有可能是因为引入这个机制之后,会导致混乱。嗯,这个原因的可能性非常大。。。)。

2、解决方法

这里解决的方法也算是比较容易。大家在写java代码时,一定要注意尽量将类放在一个显式指定的包中,不要直接扔在缺省包中。

上面的方法适用于事前控制。如果情况已经出了,那么该如何在其他包中访问缺省包中的类呢?答案就是在于java的反

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值