JAVA小问题,关于类访问另一个包中的类的问题,请大神看清问题在作答
我在一个名叫test的包下建立了一个类A,而另一个类B我没有定义包,用的是defaultpackage,我想在test包下的这个A类访问另一个类B,可是总是报错,错误就是...
我在一个名叫test的包下建立了一个类 A,而另一个类 B 我没有定义包,用的是default package,我想在test包下的这个 A 类访问另一个类 B,可是总是报错,错误就是说我没有定义这个类 B,请教一下我该怎么样才能访问到 这个没有包的类 B(在一个有包的类里)。
(另外我的类都是public的)。 展开
(另外我的类都是public的)。 展开
3个回答
展开全部
文件示例
首先通过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.
二:绕弯路的方法:使用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岁了。”
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询