Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在java中创建一个公共静态类?_Java_Class_Static - Fatal编程技术网

有没有办法在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的文件中?