gpt4 book ai didi

java - 在枚举抽象方法中转换对象

转载 作者:行者123 更新时间:2023-12-01 16:52:48 25 4
gpt4 key购买 nike

我有这种枚举

   public enum MyEnum {
member1(MyClass1.class){
@Override
public void doStuff(Object obj) {
...
}
},
member2(MyClass2.class){
@Override
public void doStuff(Object obj) {
...
}
};
...
public abstract void doStuff(Object obj);
}

我想做的是像这样调用枚举中的方法:

MyEnum.member1.doStuff(myObject);

并在枚举中包含必须转换为哪个对象的方法。假设我传入的 myObject 是 MyClass1。 member1 应该自动知道它只需要 MyClass1,它也在枚举成员描述中定义。

这样的事情有可能吗,或者我走的是一条完全错误的道路?

最佳答案

public enum MyEnum {
member1(String.class){
@Override
public void doStuff(Object obj) {
this.checkArgumentType(obj);
String stringObj = (String) obj;
//...
}
},
member2(Integer.class){
@Override
public void doStuff(Object obj) {
this.checkArgumentType(obj);
Integer stringObj = (Integer) obj;
//...
}

};

private final Class<?> clazz;

MyEnum(Class<?> clazz) {
this.clazz = clazz;
}

void checkArgumentType(Object obj) {
if (!clazz.isAssignableFrom(obj.getClass())) {
throw new IllegalArgumentException("Wrong class");
}
}

//...
public abstract void doStuff(Object obj);
}

关于java - 在枚举抽象方法中转换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36576256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com