Не работает RecordType1.LEN
?
У меня сейчас нет среды Java, поэтому я собираюсь стереть яйцо с лица, но поскольку enum Foo
эквивалентно class Foo extends Enum<Foo>
, я не могу понять, почему вы не можете просто получить доступ к статические элементы стандартным способом.
Редактировать: если вы хотите получить динамический доступ к статическим элементам, то это не сработает, поскольку у вас есть для доступа к статическим элементам на основе класса, а не экземпляра, в этом суть. Вы, вероятно, должны сделать что-то подобное вместо этого, поскольку, если поведение меняется в зависимости от подтипа экземпляра, это в точности , для чего предназначен интерфейс:
class EnumTest
{
private interface RecordLayout {
public int length();
public int staticLength(); // give this a more meaningful name
}
private enum RecordType1 implements RecordLayout {
...
public static int LEN = 3;
public int staticLength() {
return LEN;
}
}
private enum RecordType2 implements RecordLayout {
...
public static int LEN = 5;
public int staticLength() {
return LEN;
}
}
...
private static String parse(String data, RecordLayout record) {
int len = record.getStaticLength();
System.out.println(len);
...
}
}