繁体   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