У меня есть два различных перечислений:Pass перечисление класса в качестве параметра метода в Java
public enum A {
mass(10); // many other values omitted for clarity
private final int m;
private A(int m) { this.m = m; }
public int value() { return this.m; }
}
public enum B {
mass(100); // many other values omitted for clarity
private final int m;
private B(int m) { this.m = m; }
public int value() { return this.m; }
}
и хочу передать класс перечисления в качестве параметра к моей функции. Из других ответов, которые я нашел на SO, предполагается, что я могу передать класс, но я не знаю, как правильно определять и использовать A или B перечисление в теле функции:
public int mass(Class<?> clazz) {
// Is it the best way? How to avoid a bunch of ifs?
if (clazz == A.class) return A.mass.value();
if (clazz == B.class) return B.mass.value();
}
Это кажется действительно уродливым, и, как будто вам не нужно это делать, но он должен работать нормально. – bmargulies
Почему бы просто не использовать 'A' и' B' интерфейс с методом getMass()? – resueman