java为什么参数。getType()。isInstance(HttpServletRequest.class)返回值为false,但use“==”为true
Parameter[] ps = method.getParameters();
Map<String,Integer> map = new HashMap<String,Integer>();
for(int ij = 0;ij<ps.length;ij++){
Parameter p = ps[ij];
RequestParam rp = p.getAnnotation(RequestParam.class);
if(rp != null){
//do something
}else {
System.out.println(p.getType());
System.out.println(p.getType().isInstance(HttpServletRequest.class));
System.out.println(p.getType() == HttpServletRequest.class);
}
}
输出为:
interface javax.servlet.http.HttpServletRequest
false
true
为什么使用“isInstance”是假的而使用“==”是真的? 因为“实例”不能判断关系
# 1 楼答案
isInstance等于instanceOf
该方法返回false,因为您正在将一个类(由p.getType()返回)与另一个类HttpServletRequest进行比较。类。此方法需要一个实例,例如:
equals运算符返回true,因为这两个类相等
如果你想了解这种关系,你必须使用这种方法
# 2 楼答案
该类型不是} 实例
HttpServletRequest
类的实例,而是包含HttpServletRequest
类信息的^{