- 5,018
- 47
- 783
В общем, я решил красивенько себе все оформить. Мое дерево, оно состоит из нескольких блоков, каждый из которых является объектом одного класса. Для того чтобы не плодить классы, я решил сделать EnumTreeType. Вроде сделал, хорошо, все блоки расквартировал по категориям. Но конечно, я подумал что если вдруг захочу поюзать блок листвы или дерева, то его надо будет достать из этого самого типа. В общем, в данном енуме методы, должные возвращать блок, возвращают нулл. Причем, как показывает дебаг, это происходит на уровне еще только инициализации блоков. То есть казалось бы, нужно из енумов взять аргументы, присвоить их глобальным переменным и затем через эти глобальные переменные получать нужные блоки для каждого типа. Честно говоря, не понимаю, почему
Есть мысли?
Java:
public enum EnumTreeType {
ASH(BlocksList.REAL_ASH,BlocksList.REAL_TB_ASH, BlocksList.REAL_ASH_BRANCH,BlocksList.REAL_ASH_LEAVES,0),
OAK(BlocksList.REAL_OAK,BlocksList.REAL_TB_OAK, BlocksList.REAL_OAK_BRANCH,BlocksList.REAL_OAK_LEAVES,1),
BIRCH(BlocksList.REAL_BIRCH,BlocksList.REAL_TB_BIRCH, BlocksList.REAL_BIRCH_BRANCH,BlocksList.REAL_BIRCH_LEAVES,2),
LINDEN(BlocksList.REAL_LINDEN,BlocksList.REAL_TB_LINDEN, BlocksList.REAL_LINDEN_BRANCH,BlocksList.REAL_LINDEN_LEAVES,3),
PINE(BlocksList.REAL_PINE,BlocksList.REAL_TB_PINE, BlocksList.REAL_PINE_BRANCH,BlocksList.REAL_PINE_LEAVES,4),
SPRUCE(BlocksList.REAL_SPRUCE,BlocksList.REAL_TB_SPRUCE, BlocksList.REAL_SPRUCE_BRANCH,BlocksList.REAL_SPRUCE_LEAVES,5),
POPLAR(BlocksList.REAL_POPLAR,BlocksList.REAL_TB_POPLAR, BlocksList.REAL_POPLAR_BRANCH,BlocksList.REAL_POPLAR_LEAVES,6),
PEAR(BlocksList.REAL_PEAR,BlocksList.REAL_TB_PEAR, BlocksList.REAL_LINDEN_BRANCH,BlocksList.REAL_LINDEN_LEAVES,7),
LARCH(BlocksList.REAL_LARCH,BlocksList.REAL_TB_LARCH, BlocksList.REAL_LARCH_BRANCH,BlocksList.REAL_LARCH_LEAVES,8);
Block trunk;
Block tb;
Block branch;
Block leaves;
int id;
private static final EnumTreeType[] ENUMLOOKUP = new EnumTreeType[values().length];
private EnumTreeType(Block trunk, Block thickbranch, Block branch, Block leaves, int id) {
this.id = id;
this.trunk = trunk;
this.tb = thickbranch;
this.branch = branch;
this.leaves = leaves;
}
public Block getTrunkFromType() {
return ENUMLOOKUP[id].trunk;
}
public Block getThickBranchFromType() {
return ENUMLOOKUP[id].tb;
}
public Block getBranchFromType() {
return ENUMLOOKUP[id].branch;
}
public Block getLeavesFromType() {
return ENUMLOOKUP[id].leaves;
}
static
{
for (EnumTreeType tt : values())
{
ENUMLOOKUP[tt.id] = tt;
}
}
}
Последнее редактирование: