簡體   English   中英

有沒有辦法在java中創建一個公共靜態類?

[英]is there a way to make a public static class in java?

所以我正在學習本教程,但遇到了一個問題,提供的代碼不適用於我獲得/理解的所有信息。

public static class ModItemGroup extends ItemGroup {

    private final Supplier<ItemStack> iconSupplier;

    public ModItemGroup(final String name, final Supplier<ItemStack> iconSupplier) {
        super(name);
        this.iconSupplier = iconSupplier;
    }

    @Override
    public ItemStack createIcon() {
        return iconSupplier.get();
    }

    public static final ItemGroup MOD_ITEM_GROUP = new ModItemGroup(Main.MODID, () -> new ItemStack(Items.LIGHT_BLUE_BANNER));


}

問題出在第一行(根據 IntelliJ),“此處不允許使用修飾符 'static'”。 但是如果我刪除“靜態”,它仍然不起作用。 我想知道如何解決這個問題/解決這個問題。 我已經閱讀了靜態嵌套類,但我沒有讓它與這篇文章中的其他代碼一起工作。 這可能是我剛剛錯過的一些簡單的事情,如果是這樣的話,我很抱歉。

static作為類修飾符會導致內部類被視為一個單獨的實體,而不是需要對封閉類的實例的引用。 因此,只有在內部類上使用它才有意義,所以它只允許用於內部類,而不是頂級類。 教程說如下:

然后在該包中創建一個名為“ModItemGroups”的新類。 接下來,創建一個名為“ModItemGroup”的公共靜態內部類,它擴展了 ModItemGroups中的ItemGroup(來自 net.minecraft.item.ItemGroup)

這不是很清楚(我不能在快速瀏覽后准確地說我對本教程進行評分,盡管這完全是另一回事),但這需要在 ModItemGroups類中定義,而不是作為頂級類。

這應該是一個內部類,您可以查看本教程以了解有關內部類的更多信息: https : //www.javatpoint.com/static-nested-class

您不能將類標記為靜態。 唯一的例外是嵌套類,它可以被標記為靜態。 這個靜態內部類可以訪問外部類的靜態變量,包括那些標記為私有的。 它不能訪問外部類的非靜態變量。

暫無
暫無

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

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