좋아요. 지금 제가 작업중인 프로젝트의 코드를 작성 중입니다. 데이터 저장을위한 열거 형을 선택하는 것이 가장 좋습니다. 하지만 내 인생에서 처음으로 enum.ordinal()은 -1을 반환합니까? Java enum ordinal -1을 반환합니까?
을 Heres 코드 : DuelRules.Rules rule = DuelRules.Rules.values()[(buttonId - (buttonId < 29 ? 18 : 19))];
if (buttonId == 29) {
rule = DuelRules.Rules.POCKET;
}
System.out.println(rule + ", " + rule.ordinal());
rules.swapRule(player, other, rule);
reset(false);
여기이 문 :
System.out.println(rule + ", " + rule.ordinal());
그것은 올바른 규칙 값을 출력하지만 rule.ordinal 인쇄 할 때()는 -1을 인쇄한다?
예 :
HAT, -1
내 열거 :
public enum Rules {
HAT(5000, 1),
CAPE(5000, 2),
AMULET(5000, 4),
WEAPON(5000, 8),
BODY(5000, 16),
SHIELD(5000, 32),
LEG(5000, 128),
GLOVE(5000, 512),
BOOT(5000, 1024),
RING(5000, 4096),
ARROW(5000, 8192),
POCKET(17837, 1),
FORFEIT(4989),
MOVEMENT(4990),
RANGE(4991),
MELEE(4992),
MAGIC(4993),
DRINKS(4994),
FOOD(4995),
PRAYER(4996),
OBSTACLES(4997),
FUN_WEAPONS(4998),
NO_ABILITIES(4999),
SUMMONING(5001);
private final int varbitId;
private final int value;
private Rules(int id, int... value) {
this.varbitId = id;
this.value = value.length > 0 ? value[0] : 0;
}
}
주, 그 열거가 다른 클래스의 내부, 즉 결과에 영향을 줄 수 있는지 확실하지 않습니다. 도와 줘서 고마워. 이걸로 완전히 잃어 버렸어.
EDIT : 더 자세히 검토하면 서수가 인수로 전달되어 변경되었음을 알았습니까? 콘솔의
Screnshot :
코드 :
이 점 하나 인쇄 } else if (buttonId >= 18 && buttonId <= 42) {
DuelRules.Rules rule = DuelRules.Rules.values()[(buttonId - (buttonId < 29 ? 18 : 19))];
System.out.println("Point one: "+rule + ", " + rule.ordinal());
rules.swapRule(player, other, rule);
getDuel(other).rules.setRules(player, other, rules
.rules);
reset(false);
sendFlash(interfaceId, buttonId);
}
, 규칙과 .ordinal,이 경우 장애물에, 올 20
하지만 rules.swapRule의 규칙 매개 변수를 전달하는 곳에서는 서수가 -1로 변경됩니까?
public boolean swapRule(Player player, Player other, Rules rule) {
System.out.println("Point 2(swapRule): " + rule + ", " + rule.ordinal());
}
인수로 전달할 때 규칙 매개 변수의 변경 원인은 무엇입니까?
* 대부분의 프로그래머는이 방법을 사용하지 않습니다. EnumSet 및 EnumMap * ([javadoc] (http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html))과 같은 정교한 enum 기반 데이터 구조에서 사용하도록 설계되었습니다. # 서수 % 28 % 29)). 요소 인덱스로 작업해야 할 때 enum을 사용하는 것은 나쁜 습관입니다. – Everv0id
이것을 재현 할 수 없습니다. 완전하고 재현 가능한 예를 게시하십시오. –
나는 투표 할 수 없습니다. 당신이 기술하고있는 것은'Enum # ordinal()'에 대한 javadoc에 대한 것이지 당신은 아직 증명을 제공하지 못했다. –