java 反射getClass .class 的使用方法示例

网友投稿 266 2022-12-21


java 反射getClass .class 的使用方法示例

本文实例讲述了java 反射getClass .class 的使用方法。分享给大家供大家参考,具体如下:

java反射机制

怎么从一个实例上的获得类反射

/**

* obj 实例的对象

* getClass() 获得该实例类的反射

* @return

* Class extends Object>

*/

obj.getClass();

//例子

String str1 = "123";

Class> strClass1 = str1.getClass();

String str2 = new String("456");

Class> strClass2 = str2.getClass();

怎么从一个类上获得类的反射

/**

* ClassName 类名称

* .class 该类的属性

* @return

* Class extends Object>

*/

ClassName.class

//例子

Class> a = String.class

Class> b = Integer.class

Class> c = Double.class

package Main;

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

import java.util.Arrays;

import Demo.Demo1;

public class Index

{

public static void main(String[] agrs) throws Exception

{

Demo1 obj = new Demo1();

String str = (String)runTargetMethod(obj,"test1",new Class[]{String.class,String.class},new Object[]{"2","3"});

System.out.println(str);

System.out.println();

System.out.println();

System.out.println();

dumpTargetMethod(obj);

}

/**

* 调用指定对象的指定方法。

* @param Object obj 对象实例

* @param String methodName 要调用的方法名称

* @param Class>[] classes 方法中的参数对象

* @param Object[] valObj 需要向参数中传递的值

* @return Object 直接结果

* */

public static Object runTargetMethod(Object obj,String methodName,Class>[] classes,Object[] valObj) throws Exception

{

Class> classObj = obj.getClass();

Method method = classObj.getMethod(methodName,classes);

return method.invoke(obj, valObj);

}

/**

* 打印对象内容

* @param Object obj 对象实例

* @throws IllegalAccessException

* @throws IllegalArgumentException

* */http://

public static void dumpTargetMethod(Object obj) throws IllegalArgumentException, IllegalAccessException

{

Class> classObj = obj.getClass();

System.out.println("-------------------method dump-------------------------");

Method[] methods = classObj.getDeclaredMethods();

for(Method method : methods)

{

Class>[] parameters = method.getParameterTypes();

StringBuffer strBuffer = new StringBuffer();

for(int i=0;i

{

if(i < (parameters.length - 1))

strBuffer.append(parameters[i].getName() + ",");

else

strBuffer.append(parameters[i].getName());

}

if(!strBuffer.toString().isEmpty())

{

System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + " method return type : " + method.getReturnType().getName() + " method name : " + method.getName() + " parameters : " + strBuffer.toString() + ")");

}else{

System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + " method return type : " + method.getReturnType().getName() + " method name : " + method.getName() + " parameters : null)");

}aSJbaoCWM

}

System.out.println("-------------------method dump-------------------------");

System.out.println("-------------------------------------------------------");

System.out.println("-------------------fields dump-------------------------");

Field[] fields = classObj.getDeclaredFields();

for(Field field : fields)

{

//能够访问该字段

field.setAccessible(true);

System.out.println("field info (modifier : " + Modifier.toString(field.getModifiers()) + " type : " + field.getType().getName() + " " + " name : " + field.getName() + " defaultValue : " + field.get(obj).toString() + ")");

}

}

}

package Demo;

/**

* Demo 测试类

*/

public class Demo1

{

public String demo1 = "demo1_val";

protected String demo2 = "demo2_val";

private String demo3 = "demo3_val";

public static String demo4 = "demo4_val";

public String getName()

{

return "my name is 勇哥";

}

public int getAge()

{

return 22;

}

public String test1(String str1,String str2)

{

StringBuffer buffer = new StringBuffer(str1);

buffer.append(str2);

return buffer.toString();

}

public String test1()

{

return "123";

}

}

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

{

if(i < (parameters.length - 1))

strBuffer.append(parameters[i].getName() + ",");

else

strBuffer.append(parameters[i].getName());

}

if(!strBuffer.toString().isEmpty())

{

System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + " method return type : " + method.getReturnType().getName() + " method name : " + method.getName() + " parameters : " + strBuffer.toString() + ")");

}else{

System.out.println("method info (method modifier : " + Modifier.toString(method.getModifiers()) + " method return type : " + method.getReturnType().getName() + " method name : " + method.getName() + " parameters : null)");

}aSJbaoCWM

}

System.out.println("-------------------method dump-------------------------");

System.out.println("-------------------------------------------------------");

System.out.println("-------------------fields dump-------------------------");

Field[] fields = classObj.getDeclaredFields();

for(Field field : fields)

{

//能够访问该字段

field.setAccessible(true);

System.out.println("field info (modifier : " + Modifier.toString(field.getModifiers()) + " type : " + field.getType().getName() + " " + " name : " + field.getName() + " defaultValue : " + field.get(obj).toString() + ")");

}

}

}

package Demo;

/**

* Demo 测试类

*/

public class Demo1

{

public String demo1 = "demo1_val";

protected String demo2 = "demo2_val";

private String demo3 = "demo3_val";

public static String demo4 = "demo4_val";

public String getName()

{

return "my name is 勇哥";

}

public int getAge()

{

return 22;

}

public String test1(String str1,String str2)

{

StringBuffer buffer = new StringBuffer(str1);

buffer.append(str2);

return buffer.toString();

}

public String test1()

{

return "123";

}

}

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java list常用方法总结
下一篇:java对象序列化操作实例分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~