Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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_Minecraft_Bukkit - Fatal编程技术网

Java 如何在不启动方法的情况下在变量中设置属性?

Java 如何在不启动方法的情况下在变量中设置属性?,java,minecraft,bukkit,Java,Minecraft,Bukkit,我想在不输入方法的情况下访问变量,并且想知道这是否可行 我试过: public class MyClass{ public static ItemStack myItem = new ItemStack(Material.BOOK); myItem.addEnchantment(Enchantment.ARROW_DAMAGE, 1); } 但是我相信如果不启动一个方法(例如main方法),这是不可能的 还有什么办法吗?也许这会解决问题: public class MyClas

我想在不输入方法的情况下访问变量,并且想知道这是否可行

我试过:

public class MyClass{
    public static ItemStack myItem = new ItemStack(Material.BOOK);
    myItem.addEnchantment(Enchantment.ARROW_DAMAGE, 1);
}
但是我相信如果不启动一个方法(例如main方法),这是不可能的


还有什么办法吗?

也许这会解决问题:

public class MyClass{
public static ItemStack myItem;
static
{ 
myItem = new ItemStack(Material.BOOK);
myItem.addEnchantment(Enchantment.ARROW_DAMAGE, 1);
}
}

阅读有关静态初始化的信息:

如果您的课程不是期末考试,这也会起作用:

public class MyClass{
    public static final ItemStack myItem = new ItemStack(Material.BOOK) {

        {
            addEnchantment(Enchantment.ARROW_DAMAGE, 1);
        }

    };
}

不,这在Java中是不可能的。在Java中,在任何方法之外都有代码是无效的。还值得注意的是,第二种方法定义了匿名类
MyClass$1
,这对于大多数用例来说都是次优的。次优?对对于大多数用例。。。也许,也许。在大多数用例中,它将是先发制人的优化。
public class MyClass{
    public static final ItemStack myItem = new ItemStack(Material.BOOK) {

        {
            addEnchantment(Enchantment.ARROW_DAMAGE, 1);
        }

    };
}