先获取Method对象
以下仅供参考
package comkiddtestzhidao;import javalangreflectMethod;
/
Hello world!
/
public class Main {
public static void main(String[] args) {
Method method1 = null;
Method method2 = null;
try {
method1 = ClassforName("comkiddtestzhidaoCat")getMethod("getName", (Class<>[]) null);
method2 = ClassforName("comkiddtestzhidaoCat")getMethod("getChilds", (Class<>[]) null);
} catch (NoSuchMethodException ex) {
exprintStackTrace();
} catch (SecurityException ex) {
exprintStackTrace();
} catch (ClassNotFoundException ex) {
exprintStackTrace();
}
if (null != method1) {
Systemoutprintln(method1getGenericReturnType()getTypeName());
}
if (null != method2) {
Systemoutprintln(method2getGenericReturnType()getTypeName());
}
}
}
class Cat {
private String name;
private Cat[] childs;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public Cat[] getChilds() {
return childs;
}
public void setChilds(Cat[] childs) {
thischilds = childs;
}
}
对象gerClass()getName()就是了,对象时谁的,最后就是谁的全名,不会有内部类的区别
如果没有对象那就是:类名classgetName(),不过这样是闲的无聊,有类名,再返回字符串形式的类名
背景介绍:在一个Bean类中,需要通过反射机制获得private字段属性时,如果用通常获得步骤获得会报如下错误: javalangIllegalAccessException: Class Test can not access a member of class Bean with modifiers "private" at sunreflectReflectionensureMemberAccess(Reflectionjava:57) at javalangreflectFielddoSecurityCheck(Fieldjava:811) at javalangreflectFieldgetFieldAccessor(Fieldjava:758) at javalangreflectFieldget(Fieldjava:228) 解决如下代码实现代码: 1Beanclass内容如下: public class Bean { private String aa; } 2Testclass内容如下: public class Test { public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Bean test = new Bean(); Field f = BeanclassgetDeclaredField("aa"); //其中,最关键的代码是: //fsetAccessible(true); //这行代码把对象data上的name字段设置为public访问属性 fsetAccessible(true); Systemoutprintln(fget(test)); fset(test, "t2"); Systemoutprintln(fget(test)); } } 运行Test类输出如下: null t2
反射不是通过get取值的,是通过该对象的信息,比如说名称、内存地址等来访问类,方法,属性等,可以获取任意对象的信息,但不能获得私有属性(private String s=“sd”;)的值,切记
推荐《JAVA核心技术》这本书会对你有帮助的
等你学过SSH之后你就明白为要用反射了,牛B的框架都是通过配置文件,即反射机制来做的
例如吧,你想把a对象放到b对象中,但是你并不知道B对象的方法名叫什么
,或者并不知道用户会将方法名定义成什么
这个时候,你只需要在配置文件中,或者是用注解,写上去那么通过反射就可以得到某个方法了
反射机制是比较高级的东西,你还是踏踏实实的吧,
就这么说你可以理解不了,也并不知道他的意义在哪,
只有等你接触的框架,代码多了自然会明白他的作用
Java中要用到反射,首先就必须要获取到对应的class对象,在Java中有三种方法获取类对应的class对象。 1、通过类的class属性 2、通过类实例的getClass()方法获取
以上就是关于如何通过Java反射获取一个类属性的类型要类型Class<全部的内容,包括:如何通过Java反射获取一个类属性的类型要类型Class<、java中如何通过反射获取一个.java文件中的所有类。、java中如何实现private反射获得对象字段值的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)