JAVA小问题,关于类访问另一个包中的类的问题,请大神看清问题在作答

我在一个名叫test的包下建立了一个类A,而另一个类B我没有定义包,用的是defaultpackage,我想在test包下的这个A类访问另一个类B,可是总是报错,错误就是... 我在一个名叫test的包下建立了一个类 A,而另一个类 B 我没有定义包,用的是default package,我想在test包下的这个 A 类访问另一个类 B,可是总是报错,错误就是说我没有定义这个类 B,请教一下我该怎么样才能访问到 这个没有包的类 B(在一个有包的类里)。
(另外我的类都是public的)。
展开
 我来答
雪飞潇潇
2016-10-28 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:871万
展开全部

文件示例

    

首先通过A类直接访问B类时无法成功访问到的。

    原因:情况1: A类中,不导入B类,直接使用。那么系统会在test包里寻找B类。

                           结果很明显,test包中根本没有B类。所以会提示B类找不到。

               情况2:  试图利用导包命令import,把B类导入A类。

                            这时要注意:既然是导包命令,需要的是  包名.类名或者包名.*的方式

                            比如import   XX包.xx类。

                            结果又会失败,因为B类根本就没有包名,无法使用导包命令

解决办法:

一: 推荐方法:养成良好的代码书写习惯,不要使用默认包,请自定义包名。然后在里面写类。

比如

a.

这里只需要在A类import test.com.B;就可以了

b.

这里可以在A类直接使用


二:绕弯路的方法:使用java的反射机制来操作B类。

    代码如下:

 default package里的B类

public class B {
public String name;
public int age;
public void sayHi(String name) {
System.out.print(this.name + "告诉" + name + ":“我今年" + age + "岁了。”");
}
}

test包里的A类

package test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class A {
public static void main(String[] args) throws ClassNotFoundException, Exception, IllegalAccessException {
Class<?> bc = Class.forName("B");
Object obj = bc.newInstance();
Field  fname =bc.getField("name");//获取属性
fname.set(obj, "张三");//设置属性的值
Field fage = bc.getField("age");
fage.set(obj,8);
Method method = bc.getMethod("sayHi", String.class);
method.invoke(obj, "班主任");//利用obj主调方法,传入参数
}
}

运行测试:

张三告诉班主任:“我今年8岁了。”

                           

     

xjf5562
2016-10-28 · TA获得超过1190个赞
知道小有建树答主
回答量:896
采纳率:75%
帮助的人:743万
展开全部
修改类B,给它也建个包,然后用import 导入。或者干脆就加入到这个test包里。
追问
能不能告诉我为什么这个类A死活不能访问到这个类 B,解决方法我也知道,但不知道为什么这样就不能访问啊,大神再看看吧,谢谢啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-10-28
展开全部
使用反射 ,,,可以做到

~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式