在java中,如何使用isAssignableFrom的映射避免多个if-else
我希望避免在java中使用if-else:
for (Class clazz : method.getParameterTypes()) {
if (SomeClass.class.isAssignableFrom(clazz)) {
arguments[i] = onearg;
} else if (SomeOtherClass.class.isAssignableFrom(clazz)) {
arguments[i] = someotherarg;
}
}
有人能建议怎么做吗?谢谢
# 1 楼答案
您可以将类及其参数存储在
Map<Class<?>, Object>
中并迭代映射,这将用一个if语句替换迭代循环中的if-else构造例如:
具体的实现取决于您的类。如果映射中的类彼此之间没有关系(例如超类、子类、接口等),则可以直接应用代码。否则,正如bestsss所指出的,您应该坚持超级类/接口迭代,以便保留类层次结构
您可以进一步调查Java Annotations,但如果没有关于要求的进一步详细信息,我无法100%确定如何在您的案例中应用它们。您可以用参数注释您的超类
并在使用^{} 的迭代过程中获取方法参数类型的超类,然后检索带注释的参数值以进行赋值