if(!"class".equals(pd.getName())){ 这句中的 !"class"是什么意思
package cn.itcast.test;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import org.junit.Test;
import cn.itcast.vo.user;
public class IntrospectorTest {
@Test
public void run() throws Exception{
user user = new user();
BeanInfo info = Introspector.getBeanInfo(user.getClass());
PropertyDescriptor [] pds = info.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
if(!"class".equals(pd.getName())){
Method m = pd.getWriteMethod();
m.invoke(user, "admin");
}
}
System.out.println(user.getUsername());
}
}
分成两部分
"!"和"class".equals(pd.getName())
"class".equals(pd.getName())的意思就是,比较pd.getName()这个方法的值是否与字符串"class"相等。
而"!"就是否定,不,非的意思。
连起来就是。。if(pd.getName的值不为"class")
就是否的意思,那句话的意思是判断pd.getName()不等于“class”,就是字符串比较
这里只是一个字符串“class”,判断pd.getName()获取的是否是这个字符串
首现是BeanInfo info = Introspector.getBeanInfo(user.getClass());里面user.getClass(),info.getPropertyDescriptors();之后返回的pds,pd.getName()就是pds中的getname()出来的字符串,那么问题中的"class"就是说你取出来的字符串和这个是否匹配
就是个字符串常量而已。。。。。。。。。。。。。
这里的'class' 是一个字符串引用类型
"class".equals(pd.getName()) 这一句就是判断 pd.getName()或者的字符串是否 等于 "class",前边加上一个“!”就表示取反或者否的意思,
就是判断pd.getName()或者的字符串是否 不等于 "class"。
就跟 "==" 和 "!="似的,"=="判断是否等于, "!="判断是否不等于。 字符串不能用 "=="和"!="来比较,所有用了equals方法和用 "!" 来进行取反。
就是一个字符串而已,值就是class。
非常感谢以上各位大神 的帮助!