package java_212_反射机制_动态操作_构造器_方法_属性_练习;
/**

  • 属性
    */
    public class User {
    private int id;
    private int age;
    private String uname;
    //get与set方法
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getUname() {
    return uname;
    }
    public void setUname(String uname) {
    this.uname = uname;
    }
    //构造器
    public User() {
    super();
    }
    public User(int id, int age, String uname) {
    super();
    this.id = id;
    this.age = age;
    this.uname = uname;
    }
    }
    //------------------------------------------------
    package java_212_反射机制_动态操作_构造器_方法_属性_练习;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**

  • 应用反射的API,获取类的信息(类的名字,属性,方法,构造器等等)
    */
    @SuppressWarnings(“all”)
    public class Demo02 {
    public static void main(String[] args) {
    //实现动态加载
    String path = “java_211_反射机制_介绍_Class对象获取_练习.bean.User”;//路径 ;包+类名
    //创建动态对象
    try {
    Class clazz = Class.forName(path);
    //对象是表示或封装一些数据,一个类被加载后,JVM回你创建一个对应,该类的Class类的整个结构信息会被放到对应的Class对象中
    //这个Class对象就像一面镜子一样,通过这面镜子我可以看到对应类的全部信息

         //获取类的名字System.out.println(clazz.getName());//获得全部路径 包名+类名吧                      System.out.println(clazz.getSimpleName());//获得路径的一部分 ;类名System.out.println("=======属性============");//获取属性信息Field[] fields = clazz.getFields();//只能获取public的FieldSystem.out.println("fields.length-->"+fields.length);//因为前面是User 类的属性是私有的  所以读取不到Field[] fields2 = clazz.getDeclaredFields();//这个就是返回所有属性System.out.println("fields2.length-->"+fields2.length);Field f = clazz.getDeclaredField("uname");System.out.println(f);for(Field temp:fields2){//不能用 fields用fields2System.out.println("属性"+temp);}System.out.println("========方法===========");//获取方法信息Method[]  methods = clazz.getDeclaredMethods();//也是获取所有方法Method m01 = clazz.getDeclaredMethod("getUname", null);//get这个是没有参数的;注意getUname与构造器名称及大小写一致Method m02 = clazz.getDeclaredMethod("setUname", String.class);//set这个有参数,所以要有参数类型for(Method m:methods){//不能用 fields用fields2System.out.println("方法:"+m);}System.out.println("========构造器===========");//获取构造器信息Constructor[] sonstructors = clazz.getDeclaredConstructors();//获取所有构造器信息Constructor c1 = clazz.getDeclaredConstructor(null);//空参System.out.println("加入null获得空参构造器:"+c1);Constructor c2 = clazz.getDeclaredConstructor(int.class,int.class,String.class);//有参System.out.println("获得有参构造器:"+c2);for(Constructor c3:sonstructors){//所有构造器System.out.println("构造器:"+c3);}} catch (Exception e) {e.printStackTrace();}
    

    }
    }
    //测试结果--------------------------------------

ava_212_反射机制_动态操作_构造器_方法_属性_练习相关推荐

  1. java 反射动态修改数据类型_[Java-基础]反射_Class对象_动态操作

    动态性 动态语言 在程序运行时,可以改变程序结构或变量类型,典型的语言: Python,ruby,javascript 如: function test(){ var s = "var a= ...

  2. Java 反射机制和动态代理是基于什么原理,了解过吗?

    工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1."知其然不知其所以然". 做了多年技术,开发了 ...

  3. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...

    方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...

  4. JavaME程序 Run Anywhere-- 利用反射机制来动态加载声

    让JavaME程序 Run Anywhere-- 利用反射机制来动态加载声 时间:2008-02-23 09:26来源:互联网 让JavaME程序 Run Anywhere -- 利用反射机制来动态加 ...

  5. 利用java反射机制进行对象操作

    我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子:首先,我建立一个bean pu ...

  6. Java反射机制和动态代理实例

    反射机制是Java语言的一个重要特性,允许用户动态获取类的信息和动态调用对象的方法. 通过给定类的名字,通过反射机制就可以获取类的所有信息. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道 ...

  7. 公有变量java_Java反射机制(只可以访问公有的方法或者变量)

    1.ji什么是Java的反射? 要让Java程序能够运行,就得让Java类被Java虚拟机加载.Java类如果不被Java虚拟机加载就不能正常运行.正常情况下,我们运行的所有的程序在编译期时候就已经把 ...

  8. 服务器操作系统百度文库,Linux操作系统配置服务器的方法及实现_百度文库(6页)-原创力文档...

    L i n u x 是一个免费和自由传播的类 UNIX 操作系统,很多 UNIX 下的系统程 序.编程环境和应用程序都已经成功的移 植到了 Linux 上. Linux 系统是由全世界成 千上万的程序 ...

  9. 交互式多模型_论文深度提升的万金油方法——多属性决策 Ⅱ

    在上篇论文深度提升的万能方法:多属性决策 Ⅰ中,介绍完属性值的三种形式,我们继续回到第一步--决策信息的获取. 属性权重的确定是多属性决策中的一个重要研究内容,近年来关于这方面的研究已受到人们的关注, ...

最新文章

  1. 一文读懂基于神经网络的图片风格转移
  2. 【数据处理】python变量分箱常见手法:分类型、数值型、卡方、自定义
  3. Bom技术类型的讲解
  4. Java中怎样使用反射根据属性名获取和设置属性的值
  5. 如何用python最快的获取大文件的最后几行
  6. 2022.2.17自制辣白菜
  7. Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
  8. ServiceStack.Ormlit 事务
  9. P1616 疯狂的采药(python3实现)--80分
  10. 13004.循环数组队列(C语言)
  11. protocol学习笔记001---RPC和HTTP协议之间的区别_与各自优势
  12. ubuntu 网络设置
  13. Spring Boot Controller层单元测试
  14. 数据分析第二章确定分析思路
  15. 偏差方差分解Python示例
  16. 专题详解-5G接入控制:CAG新特性(3)-end
  17. 饱和度,对比度,锐度
  18. PHP 实现301转向代码
  19. 十独吟 之一 李清照
  20. Ubuntu20.4安装百度云盘

热门文章

  1. linux中swi指令,Arm Linux系统调用流程详细解析SWI
  2. sql server 函数大全
  3. 【操作系统作业】睡觉助教(用Java的ReentrantLock实现)
  4. CSS Tailwind
  5. 说点我关于演员黄轩的了解
  6. 微信支付回调通知实现
  7. android 多个shortCut快捷方式实现以及对58同城快捷方式的实现思路的研究
  8. android 键盘按下事件,Android虚拟键盘上下左右键按下和弹起的响应事件
  9. 华为 HCIE 2.0(云服务)-- 云上可扩展性设计实验
  10. php学生评价系统,学生综合素质评价系统