1 packagecn.tx.reflect;2

3 importjava.lang.reflect.Constructor;4 importjava.lang.reflect.Field;5 importjava.lang.reflect.Method;6 importjava.util.Arrays;7 /**

8 * 二、获取一个类的Class对象的三种方式:9 (1)知道类的全路径名:Class> clazz = Class.forName("类的全路径名");10 (2)知道类的名字: Class> clazz = 类名.class;11 (3)知道该类的一个对象 : Class> clazz = 对象名.getClass();12 *@authorAdministrator13 *14 */

15 public classReflectLearn2 {16

17 private static String className = "java.lang.String";18 public static void main(String[] args) throwsException {19

20 //根据类的名字获取类的Class对象

21 getClazzByClassName();22 //根据对象获取Class对象,反射获取类的方法,属性,构造器

23 getCalzzByObject(newPerson());24 }25

26 public static voidgetClazzByClassName(){27 Class> clazz = Person.class;//类名.class获取类的Class对象

28 Method[] methods =clazz.getDeclaredMethods();29 for(Method m : methods) {30 System.out.println(m);31 }32 }33

34 /**

35 * 根据类的对象获取Class对象36 *@paramobj37 */

38 public static voidgetCalzzByObject(Object obj){39 //Class extends Object>表示通过反射获取的对象的类型不确定,但是一定是Object类的子类40 //等价于Class> clazz = obj.getClass();

41 Class extends Object> clazz =obj.getClass();42 //2.获得传递过来的类(上面的String类)的所有方法——目的就是为了调用获得的方法

43 System.out.println("----------------获取类的所有声明的方法-------------------");44 Method[] methods =clazz.getDeclaredMethods();45 for(Method m : methods) {46 System.out.println(m);47 }48

49 //3.获得类的所有声明的属性——目的:设置属性或者是获取属性值

50 System.out.println("-------------获得类的所有声明的属性---------------");51 Field[] fields =clazz.getDeclaredFields();52 for(Field field : fields) {53 System.out.println(field);54 }55

56 //4.获得类的所有构造器——创建对象

57 System.out.println("--------------获得类的所有构造器-----------------");58 Constructor>[] constructors =clazz.getDeclaredConstructors();59 for (Constructor>constructor : constructors) {60 System.out.println(constructor);61 }62 }63

64 }65 /*getCalzzByObject(new Person());打印结果如下66 * ----------获取Person类的信息-------------67 public java.lang.String cn.tx.Person.toString()68 public java.lang.String cn.tx.Person.getAddress()69 public java.lang.String cn.tx.Person.getName()70 public java.lang.Integer cn.tx.Person.getId()71 public void cn.tx.Person.setName(java.lang.String)72 public void cn.tx.Person.setId(java.lang.Integer)73 public void cn.tx.Person.setAddress(java.lang.String)74 -------------获得类的所有声明的属性---------------75 private java.lang.Integer cn.tx.Person.id76 private java.lang.String cn.tx.Person.name77 private java.lang.String cn.tx.Person.address78 --------------获得类的所有构造器--------------79 public cn.tx.Person()80 public cn.tx.Person(java.lang.Integer,java.lang.String,java.lang.String)81 **/

Java动物类enjoy方法打印_Java反射学习-2 - 获取Class对象的三种方式相关推荐

  1. 反射应用和获取Class对象的三种方式

    一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...

  2. Java动物类enjoy方法打印,面向对象编程题汇总

    在授课面向对象这一章节的时候,发现找一些比较贴近的编程题还是比较难的,从网上整理了一下,希望对需要的朋友有帮助.很多是从网上找的,如果侵犯版权请联系我! 一.类和对象 1.定义一个类Demo,其中定义 ...

  3. Java反射基础:获取Class对象的三种方式

    package com.zxl.reflect;import org.junit.jupiter.api.Test; /* * 获取Class对象 * */ public class TestRefl ...

  4. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  5. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  6. java 给对象创建实例_Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  7. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

  8. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  9. java 设置session超时_Java设置session超时(失效)的三种方式

    转自:http://blog.csdn.net/hu_shengyang/article/details/8021435 1.      在web容器中设置(此处以tomcat为例) 在tomcat- ...

最新文章

  1. android开发设置dialog的高宽
  2. Boost库之circular_buffer
  3. linux通过进程名查找进程,Linux下通过进程名获得进程号
  4. [云炬创业基础笔记]第六章商业模式测试8
  5. 实践剖析.NET Core如何支持Cookie滑动过期和JWT混合认证、授权
  6. awk 多文件操作2种实现方法
  7. 正则表达式之 贪婪与非贪婪模式详解
  8. 事件--[Asp.Net]
  9. 9、1.4.1 JDK下载与安装
  10. SpringCloud Alibaba之Nacos组件
  11. 【程序人生】程序员接私活常用平台汇总
  12. Java项目--网页版音乐播放器(Spring Boot 后端逻辑)
  13. 苹果电脑Chrome浏览器截网页长图
  14. SameSite Cookie
  15. CKeditor配置
  16. 光盘在服务器上装系统,如何通过DELL引导光盘在戴尔11G服务器上安装Win2003操作系统?.docx...
  17. B站李沐讲论文笔记Transformer
  18. ROS学习笔记---ros的通信机制
  19. 软件测试如何快速入门
  20. Snapper转换器的捕捉类型

热门文章

  1. java实现ftp文件的上传与下载
  2. 学习Java编程到底是为了什么,该具备什么样的能力
  3. 致Python学习者,该跟大佬学习做项目了
  4. 如何打开Tango的ADF文件?
  5. 12-16php测试题
  6. C++中this指针的使用方法.
  7. [C#]泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,ListT,DictionaryTkey,Tvalue,SortedListTkey,Tvalue,...
  8. 颜色空间,图像格式,彩色转灰度函数
  9. Struts 体系结构与工作原理(图)
  10. Python从零开始系列连载(11)——Python的基本运算和表达式(中二)