2014-11-22 56 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); 
} 
} 
相關問題