java - 如何在方法中传递枚举参数
问题描述
我有 2 个枚举类:
public enum Dogs
{
JACKIE("Jackie"),
BOBBY("Bobby");
}
和
public enum Cats
{
CHAN("Chan"),
SPONGE("Sponge");
}
现在我在其他一些类中有一个方法,我想将枚举作为参数传递,所以我可以根据需要选择其中任何一个。
public void findAnimal()
{
List<Dogs> animals = Arrays.asList(Dogs.values());
for (Dogs animal: animals)
{
rest of the code goes here
}
}
因此,我不想提供硬编码的“狗”,而是希望有一个选择并将参数传递给该方法,例如
public void (Enum enumAnimals)
{
List<Enum> animals = Arrays.asList(Enum.values());
for (Enum animal: animals)
}
但它不接受它这样。是否可以将泛型类型作为“枚举”传递?
解决方案
Enum
是所有枚举的基类,所以不会做任何事情。如果你想使用多个枚举,你可以让它们实现一个通用接口,但即便如此,你也需要提供实例。这可以通过反思来完成,但我觉得现在将权力交给你将成为灾难的收据。一般来说,枚举适用于静态类型,而不是像特定猫这样的单个实例。Enum.values()
AnimalType
我建议你有这样的东西(非常简化的代码使其简短):
enum AnimalType {
CAT,
DOG;
}
class Animal {
String name;
AnimalType type;
Animal( String n, AnimalType t) {
name = n;
type = t;
}
}
Set<Animal> animals = ... //create a set
animals.add( new Animal( "Jackie", AnimalType.CAT ) );
animals.add( new Animal( "Chan", AnimalType.DOG) );
...
请注意,许多使用类的示例/教程Animal
更多地关注继承,即class Cat extends Animal
等等。阅读你问题的字里行间让我觉得这就是你真正想要的,而不是如何使用枚举。
推荐阅读
- json - 通过 FileMaker Pro 使用 JSON cURL 更新补丁 Microsoft Graph API Planner 任务详细信息产生错误 204
- mysql - 在具有多个值的插入中的主键冲突是否可以继续使用有效值?
- iis - IIS Windows 身份验证在 SERVER 上不断提示
- angular - ag-grid 单元格编辑只允许数字
- javascript - React 中的获取请求:如何映射对象数组中的 JSON 对象数组?
- javascript - 带 TS 的 Redux Toolkit:调度两个连续异步 thunk 操作的推荐方法是什么
- iis - 通过 Cloudflare 连接到 Zoom API 的问题
- java - @SpringBootApplication 注解未在类路径中找到 bean
- datatables - 数据表排序问题(而不是第一行取第二行进行排序)
- html - 如何使 CSS 多行打字机效果响应?