Java Eclipse:类无法解析为类型继承

时间:2013-09-13 01:17:56

标签: java eclipse

我遇到了一个问题,当我在Eclipse中打开项目时,包中的类的可见性出现了问题。

示例:

package.a
   - public abstract class clazz
package.b
   - public abstract class clazzy extends clazz

在上面的例子中,clazzy会出现错误,clazz将无法使用。如果我将clazzy移动到package.a中,然后将其移回package.b一切都很好,但除此之外我无法让eclipse认识到clazz存在。

编辑1:

是的,我正在导入课程。我也按ctrl-shift-o(导入)。如果我输入导入,eclipse仍然无法识别clazz存在。我没有尝试导入整个软件包,因为我通常会出于各种原因避免这样做。

编辑2:

当我第一次使用以下导入打开项目(它已经存在于工作区中)时:

import package.a.Clazz;

public abstract clazzy extends Clazz {
...
}

导入和clazz标识符都用红色加下划线。

我收到了一些建议:

import package.a;

这不仅不能解决问题,而且我也不想因各种原因而做。

编辑3:

我应该澄清,当我在第2段中说“移动”时,我的意思是如果我将package.b.clazzy移动到另一个包(比如package.a或package.c),eclipse似乎意识到它是愚蠢的并自行解决。如果我然后将clazzy移回package.b从那时起一切都很好。

此代码从此时开始编译并正确运行。

4 个答案:

答案 0 :(得分:3)

我通过添加此导入解决了这个问题:

import javax.persistence.InheritanceType;

希望它可以帮助某人:)

答案 1 :(得分:2)

您的问题可能是命名问题... package是Java中的关键字,不应用于包,变量,类等的名称。

将您的包重命名为a。为此,您可以重新创建它或将内容移动到名为a的新目录中,并将类顶部的包标识符更改为package a

答案 2 :(得分:0)

像这样导入包

import a.clazz;

不是包是java中的保留关键字

import package.a.clazz;

在代码中添加导入以继承类

答案 3 :(得分:0)

如果你不想导入package.a.clazz(为什么不?),那么你需要通过它的全名来引用它,

public abstract class clazzy extends package.a.clazz {

但我真的不知道你为什么要这样做而不是

import package.a.clazz;

public abstract class clazzy extends clazz {

事实上,Eclipse中“移动”的原因是因为Eclipse将clazzy移动到新包时会自动为您添加import语句。

另外,请小心使用正确的情况。在您的问题中,您使用了所有小写字母,但在您的修改中,您开始引用Clazz而不是clazz。这些是不同的,只有第一个(Clazz)遵循标准惯例。