有没有办法在java中创建一个公共静态类?
所以我跟着 我遇到了一个问题,提供的代码不能处理我得到/理解的所有信息有没有办法在java中创建一个公共静态类?,java,class,static,Java,Class,Static,所以我跟着 我遇到了一个问题,提供的代码不能处理我得到/理解的所有信息 public static class ModItemGroup extends ItemGroup { private final Supplier<ItemStack> iconSupplier; public ModItemGroup(final String name, final Supplier<ItemStack> iconSupplier) { su
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));
}
public静态类ModItemGroup扩展ItemGroup{
私人最终供应商i消费者;
公共修改项组(最终字符串名称、最终供应商iconSupplier){
超级(姓名);
this.iconSupplier=iconSupplier;
}
@凌驾
公共ItemStack createIcon(){
返回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类中定义,而不是作为顶级类来定义。
static
,因为类修饰符会将内部类视为单独的实体,与要求引用封闭类的实例相反。因此,只有在内部类上使用它才有意义,因此只允许在内部类上使用,而不允许在顶级类上使用。本教程说明如下:
然后在该包中创建一个名为“ModItemGroups”的新类。接下来,创建一个名为“ModItemGroup”的公共静态内部类,该类扩展ModItemGroups中的ItemGroup(来自net.minecraft.item.ItemGroup)
这不是很清楚(我不能确切地说我在快速查看后对本教程进行了评分,尽管这完全是另一回事),但这需要在ModItemGroups类中定义,而不是作为顶级类。这应该是一个内部类,您可以查看本教程以了解有关内部类的更多信息:这应该是一个内部类,您可以查看本教程以了解有关内部类的更多信息:您不能将类标记为静态类。唯一的例外是嵌套类,它可以标记为static。这个静态内部类可以访问外部类的静态变量,包括那些标记为private的静态变量。它无法访问外部类的非静态变量。不能将类标记为静态。唯一的例外是嵌套类,它可以标记为static。这个静态内部类可以访问外部类的静态变量,包括那些标记为private的静态变量。它无法访问外部类的非静态变量。为什么要编写
公共静态类
?你认为语义应该是什么?您可以编写内部的公共静态类
,但是静态类
的语义与它在变量/方法上的语义有些不同。“仍然不起作用”不是我们可以帮助解决的问题描述。代码看起来不错,可能是ModiteGroup。。。不在名为ModItemGroup.java的文件中?为什么要编写公共静态类
?你认为语义应该是什么?您可以编写内部的公共静态类
,但是静态类
的语义与它在变量/方法上的语义有些不同。“仍然不起作用”不是我们可以帮助解决的问题描述。代码看起来不错,可能是ModiteGroup。。。是否不在名为ModItemGroup.java的文件中?