簡體   English   中英

Java Eclipse:類無法解析為類型繼承

[英]Java Eclipse: class cannot be resolved to a type inheritance

我遇到了一個問題,當我在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從那時起一切都很好。

此代碼從該點開始編譯並正確運行。

我通過添加此導入解決了這個問題:

import javax.persistence.InheritanceType;

希望它可以幫助某人:)

您的問題可能是命名問題... package是Java中的關鍵字,不應該用於包,變量,類等的名稱。

將您的包重命名a 為此,您可以重新創建它或將內容移動到名為a的新目錄中,並更改類頂部的包標識符以package a

像這樣導入包

import a.clazz;

不是包是java中的保留關鍵字

import package.a.clazz;

在代碼中添加導入以繼承該類

如果您不想導入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 )遵循標准慣例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM