本文实例讲述了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

* */

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)");

}

}

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 反射 getclass_java 反射getClass .class 的使用方法示例相关推荐

  1. 第五章 Java 中的 wait、notify 和 notifyAll 方法示例

    您可能已经注意到 Object 类具有三个 final 方法,分别称为 wait.notify 和 notifyAll.这些方法用于线程间通信.Java 5 引入了执行器框架,它为您处理线程间通信,并 ...

  2. java 反射 getclass_JAVA反射机制中getClass和class对比分析

    搜索热词 java有两个获得类名的方法getClass()和class(),这两个方法看似一样,实则不然.这两个方法涉及到了java中的反射. 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传 ...

  3. java object.getclass_Java Object getClass() 方法

    Object getClass() 方法用于获取对象的运行时对象的类. 语法 object.getClass() 参数 无.> 返回值 返回对象的类. 实例 以下实例演示了getClass()方 ...

  4. java 对象protected,Java对象类protected void finalize throws Throwable方法示例

    对象类保护的voidfinalize() throws Throwable此方法在java.lang.Object.finalize()中可用. 当不再有引用保留时,垃圾回收器将调用此方法. 此方法对 ...

  5. c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例

    java.util.zip.GZIPInputStream.close()方法关闭此输入流并释放与该流关联的所有系统资源. 声明 以下是java.util.zip.GZIPInputStream.cl ...

  6. java finish黑_java.util.zip.GZIPOutputStream.finish()方法示例

    java.util.zip.GZIPOutputStream.finish()方法完成将压缩数据写入输出流而不关闭底层流. 连续应用多个过滤器到相同的输出流时使用此方法. 声明 以下是java.uti ...

  7. java 求交集 算法_Java计算交集,差集,并集的方法示例

    Java计算交集,差集,并集的方法示例 发布时间:2020-10-07 10:37:46 来源:脚本之家 阅读:106 作者:benbenkui 本文实例讲述了Java计算交集,差集,并集的方法.分享 ...

  8. java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...

    本文主要向大家介绍了Java语言实现求解一元n次多项式的方法示例,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 项目需要做趋势预测,采用线性拟合.2阶曲线拟合和指数拟合的算法,各种线 ...

  9. java 反射 getclass_Java反射中的getClass()方法

    Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代 ...

最新文章

  1. 字节跳动这份面试题,你能打几分
  2. “加班文化“到底是如何流行起来的
  3. linux开机启动open,树莓派-linux的多种启动自运行方式
  4. hibernate mysql 映射_hibernate与mysql映射类型对应表与mysql导入导出
  5. delphi 中如果不进行 closehandle 会怎么样_心理学:当你迷茫了,请坚持做三件事,你的未来会越来越好...
  6. 使用Postman测试https接口时的小问题记录
  7. 注塑机c语言程序,注塑机PLC程序(完整版).docx
  8. 给敏感字符加星号处理
  9. java代码自动生成
  10. win10 LTSC 2019 激活
  11. Excel表格合并单元格丢失边框
  12. 扫雷php,扫雷php
  13. java delphi socket_Delphi跨平台Socket通讯库
  14. 三维数据可视化软件html5,基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型 | 3D组态|图扑软件|数据可视化|blog...
  15. wsl 1 ubuntu 安装图像化界面
  16. 【中医养生门户网】注意!春分在于“生、升”,保肝促阳为重
  17. 获奖证书如何批量制作
  18. python 基于xgboost预测波士顿房价
  19. MongoMongo简介
  20. 2月海外域名主机商TOP10:Godaddy居首 雅虎第7

热门文章

  1. GaussianView5对分子结构.gjf文件的解读
  2. 3d旋转相册代码源码_如何使用CSS开发精美3D旋转相册?
  3. 生信服务器 | 更改 CentOS/RHEL 6/7 中的时区
  4. Nature: 人的肠道古细菌基因组集
  5. linux看硬盘io,linux查看硬盘IO
  6. R语言DALEX包的model_profile函数对caret包生成的多个算法模型的连续变量进行分析、使用Acumulated Local Effects (ALE)方法解释某个连续特征和目标值关系
  7. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign
  8. Removed k rows containing missing values
  9. UserWarning: Label not :NUMBER: is present in all training examples
  10. 基于网格的聚类算法STING