如何封装这个使用 'instanceof' 的 java 代码?
How do I encapsulate this java code that uses 'instanceof'?
如何封装使用了'instanceof'的代码,
我有很多类型要判断,如何简化它们?例如使用 for 循环。
if (obj instanceof UserLogin) {
continue;
}
if (obj instanceof MultipartFile) {
continue;
}
if (obj instanceof Part) {
continue;
}
if (obj instanceof HttpServletRequest) {
continue;
}
if (obj instanceof HttpServletResponse) {
continue;
}
//【Simplify using for loops :】
我的想法是:将你要判断的类添加到一个ignoreList集合中,使用Instanceof进行迭代。
但是有错误:无法解析符号 'get'
public boolean shouldIgnore(Object obj) {
for (int i = 0; i < ignoreList.size(); i++) {
if (obj instanceof ignoreList.get (i) ){
return true;
}
}
return false;
}
您可以使用 Class
对象并使用 isInstance
方法来检查对象是否是特定对象的实例 class:
public static boolean shouldIgnore(Object obj, Class<?>[] ignoreList) {
for (Class c : ignoreList) {
if (c.isInstance(obj)) {
return true;
}
}
return false;
}
你会像这样使用它:
shouldIgnore(new Integer(10), new Class<?>[] { Number.class, String.class })
如果您更喜欢使用 List<Class<?>>
而不是数组,它也同样有效。将方法签名更改为:
public static boolean shouldIgnore(Object obj, List<Class<?>> ignoreList)
并像这样调用它:
shouldIgnore(10, List.of(Number.class, String.class))
如何封装使用了'instanceof'的代码, 我有很多类型要判断,如何简化它们?例如使用 for 循环。
if (obj instanceof UserLogin) {
continue;
}
if (obj instanceof MultipartFile) {
continue;
}
if (obj instanceof Part) {
continue;
}
if (obj instanceof HttpServletRequest) {
continue;
}
if (obj instanceof HttpServletResponse) {
continue;
}
//【Simplify using for loops :】
我的想法是:将你要判断的类添加到一个ignoreList集合中,使用Instanceof进行迭代。 但是有错误:无法解析符号 'get'
public boolean shouldIgnore(Object obj) {
for (int i = 0; i < ignoreList.size(); i++) {
if (obj instanceof ignoreList.get (i) ){
return true;
}
}
return false;
}
您可以使用 Class
对象并使用 isInstance
方法来检查对象是否是特定对象的实例 class:
public static boolean shouldIgnore(Object obj, Class<?>[] ignoreList) {
for (Class c : ignoreList) {
if (c.isInstance(obj)) {
return true;
}
}
return false;
}
你会像这样使用它:
shouldIgnore(new Integer(10), new Class<?>[] { Number.class, String.class })
如果您更喜欢使用 List<Class<?>>
而不是数组,它也同样有效。将方法签名更改为:
public static boolean shouldIgnore(Object obj, List<Class<?>> ignoreList)
并像这样调用它:
shouldIgnore(10, List.of(Number.class, String.class))