Есть ли чистый способ передачи CLASS перечисления на функцию?Как передать перечисление в качестве параметра функции?
Рассмотрим что-то вроде этого:
public enum MyEnum implements XYZ {
//enum values
A,
B,
C;
}
public void getEnumeration(final Class<? extends XYZ> myEnum) {
//go through enumeration
for (XYZ xyz : myEnum.getEnumConstants()
System.out.println(xyz.toString());
}
перечисление передается в виде следующим образом:
getFunction(MyEnum.class);
теперь ... вышеупомянутые работы, и я могу передать мое перечисление на getEnumeration()
функции просто отлично. ОДНАКО, я хотел бы убедиться, что то, что я передаю, действительно является перечислением, а не любым классом, который реализует XYZ
. Я понимаю, что перечисление - это тип класса, но есть ли способ сильного типа, чтобы компилятор мог его забрать, если я пройду в классе, который реализует XYZ
вместо перечисления, который реализует XYZ
?
Великий, не знал, я мог бы использовать «&» в шаблонам. .. теперь, я попробовал вашу идею с моим кодом и задал вопрос. Мне нужно сохранить переданные в перечислении в моем классе. Так будет ли моя переменная чем-то вроде: 'private myVar Class расширяет Enum расширяет XYZ >> '? Я не уверен, как использовать шаблоны для переменных ... – Ayyoudy
Параметр вашего класса в этом типе: например, 'public class MyClass & XYZ>'. Затем просто используйте 'private Class myVar;'. –
Звучит неплохо. благодаря – Ayyoudy