【发布时间】:2017-12-05 23:23:03
【问题描述】:
我在一个包中的主要方法本身只能看到另一个包中的一些方法,即使它们都是公共的。这是我的代码示例。
package stuff.code;
public class AObject
{
public AObject();
public AObject(String str);
public int getLength();
public int getHeight();
}
package stuff.code;
public class BObject extends AObject
{
public BObject();
public BObject(String str);
}
package stuff.test;
import stuff.code.AObject;
import stuff.code.BObject;
public class tester
{
AObject a = new AObject(); //no red underline
AObject aa = new AObject("some string"); //no red underline
BObject b = new BObject(); //no red underline
BObject bb = new BObject("some string"); //tells me there is no such constructor
b.getLength(); //tells me I need a getLine method in BObject too
}
我研究了 setAccessible(boolean flag) 方法,但大部分内容我都没有理解,而且在我导入 java.lang.reflect.AccessibleObject 后它仍然未定义。
这不是我的实际代码。我希望这是模糊的,以便答案对遇到此问题的许多其他人更有用。我的方法都是具体的,但身体不是问题。当所有东西都在同一个包中但测试器类必须在不同的包中时,它运行良好。
【问题讨论】:
-
这是你的真实代码吗?没有主体的方法只能在抽象类或接口中工作,而不是在 AObject 和 BObject 等普通类中。会不会因为这些问题而不再编译这些类,并且在测试器中您仍在使用这些类的早期版本?
-
如果连编译都没有怎么能“正常工作”?
-
好点。我改了
-
进行干净的重建,丢弃任何旧的编译产品。 (假设您的原始代码有
{ ... }而不是;。)似乎eclipse 有一个小问题。 -
如果所有方法和构造函数都有主体,它应该可以工作。只有一行需要标识符:
int z = b.getLength();
标签: java eclipse object packages public-method