【问题标题】:My main method can't see all public methods in a different package in java我的主要方法看不到java中不同包中的所有公共方法
【发布时间】: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


【解决方案1】:

在 BObject 构造函数的第二次调用中,您传递了一个参数,而在它的类声明中,它不接受任何参数。检查那个。

【讨论】:

  • 它接受一个字符串作为参数
  • 它是接受参数但不接受构造函数的方法。默认情况下,我猜测构造函数是第一个,因为看起来你已经命名了方法 BObject 和构造函数 BObject 因此第一个被假定为构造函数并且它不带任何参数。
  • 方法必须有返回类型。 BObject() 是一个没有参数的构造函数。 BObject(String str) 是另一个带有一个参数的构造函数。它们具有相同的名称并不重要,因为它们具有不同的参数。这称为构造函数重载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 1970-01-01
  • 2014-01-14
  • 1970-01-01
  • 2011-11-30
  • 2011-09-15
  • 1970-01-01
相关资源
最近更新 更多