2014-11-22 61 views
0

我想在不输入方法的情况下访问该变量,并且想知道这是否可能。如何在不启动方法的情况下在变量中设置属性?

我想:

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

但我认为那是不可能的,但不启动的方法(例如主法)

反正有这样做呢?

+1

不,这不可能在Java中。 Java中没有任何方法以外的代码。 – ArtOfWarfare 2014-11-22 18:42:10

回答

2

阅读关于静态初始化:Static Initialization Blocks

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

而且这将工作,如果你的类不是最终的:

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

     { 
      addEnchantment(Enchantment.ARROW_DAMAGE, 1); 
     } 

    }; 
} 
+0

另外值得注意的是,第二种方法定义了匿名类“MyClass $ 1”,这在大多数用例中都不是最理想的。 – Unihedron 2014-11-22 19:31:45

+0

次优?是。对于大多数用例......也许,也许。在大多数情况下,这将是抢先优化。 – ursa 2014-11-22 19:40:55

0

也许这将解决:

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