内省实际上就是反射,只是它有自己的命名规范,可以便于使用,所以定义了一个类Introspector来专门对它进行操作。
如果不用内省,直接用反射也是可以的。比如getX,我们只知道有x这个属性,就把"x"-->"X"-->"getX"-->Class.forName("getX")-->involu 是一样的,同样调用了getX这个方法。所以不要把内省想的很复杂。
一个类中如果有两个类型相同的属性,那么他们的变量名肯定是不同的啊。比如int a ; int b ; 怎么可能有两个int a;呢?那不是重定义了吗,语法就错误了。如果是不同的类中有两个相同类型的属性,那就更没影响了,内省中传入的参数就有.class文件的对象,是能区分出你是调用了那个类的。
|