User类(用于测试)

package com.qingfeng.springbootstudy.entity;import java.io.Serializable;/*** (User)实体类** @author makejava* @since 2020-06-02 12:00:01*/
public class User implements Serializable {private static final long serialVersionUID = -11795320911240008L;/*** ID号*/private Integer id;/*** 用户名*/private String name;/*** 用户密码*/private String password;public String date;public String phone;public User() {}public User(String date, String phone) {this.date = date;this.phone = phone;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +", date='" + date + '\'' +", phone='" + phone + '\'' +'}';}public void login(){System.out.println("我是没有参数的成员方法");}public void login(String name){System.out.println("我的名字是:"+name);}
}

学习代码

package com.qingfeng.springbootstudy;import com.qingfeng.springbootstudy.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;@SpringBootTest
@SuppressWarnings("all")
class SpringBootStudyApplicationTests {@Testvoid contextLoads() {}@Testvoid test1() throws Exception {String path1 = "com.qingfeng.springbootstudy.entity.User";/*** 获取Class类对象的三种方式:* 作用:* 1.获取所有的成员变量* 2.获取所有的成员方法* 3.获取构造方法* 4.获取类名* ....*//*User user=new User();Class<?> c1=Class.forName(path1);//加在配置文件Class<?> c2=User.class;//通过类名Class<?> c3=user.getClass();//通过对象System.out.println(c1);System.out.println(c2);System.out.println(c3);*//*** --------------------------------------* a.注意:带Declared的表示private的* b.如果要获取私有的,只需要设置:对象.setAccessible(true)即可(暴力反射)** 1.获取所有的成员变量* Field[] getFields()* Field getField(String name)** Field[] getDeclaredFields()* Field getDeclaredField(String name)* --------------------------------------* 2.获取构造方法* Constructor<?>[] getConstructors()* Constructor<?> getConstructor(参数类型.class ...)** Constructor<?>[] getDeclaredConstructors()* Constructor<?> getDeclaredConstructor(参数类型.class ...)* --------------------------------------* 3.获取所有的成员方法* Method[] getMethods()* Method getMethod(String name)** Method[] getDeclaredMethods()* Method getDeclaredMethod(String name)* --------------------------------------* 4.获取类名(全类名)* String getName()* --------------------------------------* 5.* 获取方法名(名字)* String getName()* *//*-------------------------------------------------------------------*/Class<?> c = User.class;User user = new User();/*** 获取成员变量(public)*/Field[] field = c.getFields();//获取所有的public成员变量for (Field f : field) {System.out.println("成员变量对象:" + f);System.out.println("成员变量名:" + f.getName());}Field field1 = c.getField("date");//获取单个public成员变量System.out.println(field1);/***操作成员变量*设置值:Object get(Object o)*获取值:void set(Object o,value)* */field1.set(user, "1997-02-28");//设置public成员变量的值System.out.println(user);Object date = field1.get(user);//获取public成员变量的值System.out.println(date);/*----------------------------------------------------------------------*//***1.获取构造方法(public)**/Constructor<?> constructor = c.getConstructor(String.class, String.class);//获取单个有参数public构造方法System.out.println(constructor);Constructor<?>[] constructors = c.getConstructors();//获取所有的public构造方法for (Constructor<?> constructor1 : constructors) {System.out.println("构造方法对象:" + constructor1);System.out.println("构造方法名:" + constructor1.getName());//全类名}/*** 2.实例化对象*/Object o = constructor.newInstance("1997-02-28", "18388690352");//适用于有参数的构造System.out.println(o);Object o1 = c.newInstance();//只适用于无参数的构造System.out.println(o1);/*----------------------------------------------------------------------*//*** 获取成员方法(public)*invoke()方法:用于执行某个方法* */Method login = c.getMethod("login");//获取无参数的成员方法login.invoke(user);//执行无参数的数的成员方法Method login1 = c.getMethod("login", String.class);//获取有参数的成员方法login1.invoke(user, "清风");//执行有参数的成员方法System.out.println(login1.getName());//获取方法的名字Method[] methods = c.getMethods();//获取所有的public方法for (Method method : methods) {System.out.println("成员方法对象:" + method);System.out.println("成员方法名:" + method.getName());}}}

运行结果

成员变量对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.date
成员变量名:date
成员变量对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.phone
成员变量名:phone
----------------------------------------------------------------------------
public java.lang.String com.qingfeng.springbootstudy.entity.User.date
User{id=null, name='null', password='null', date='1997-02-28', phone='null'}
----------------------------------------------------------------------------
1997-02-28
public
----------------------------------------------------------------------------com.qingfeng.springbootstudy.entity.User(java.lang.String,java.lang.String)
----------------------------------------------------------------------------
构造方法对象:public com.qingfeng.springbootstudy.entity.User()
构造方法名:com.qingfeng.springbootstudy.entity.User
构造方法对象:public com.qingfeng.springbootstudy.entity.User(java.lang.String,java.lang.String)
构造方法名:com.qingfeng.springbootstudy.entity.User
----------------------------------------------------------------------------
User{id=null, name='null', password='null', date='1997-02-28', phone='18388690352'}
User{id=null, name='null', password='null', date='null', phone='null'}
我是没有参数的成员方法
我的名字是:清风
login
----------------------------------------------------------------------------
成员方法对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.toString()
成员方法名:toString
成员方法对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.getName()
成员方法名:getName
成员方法对象:public java.lang.Integer com.qingfeng.springbootstudy.entity.User.getId()
成员方法名:getId
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.setName(java.lang.String)
成员方法名:setName
成员方法对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.getDate()
成员方法名:getDate
成员方法对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.getPassword()
成员方法名:getPassword
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.login()
成员方法名:login
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.login(java.lang.String)
成员方法名:login
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.setDate(java.lang.String)
成员方法名:setDate
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.setPassword(java.lang.String)
成员方法名:setPassword
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.setId(java.lang.Integer)
成员方法名:setId
成员方法对象:public java.lang.String com.qingfeng.springbootstudy.entity.User.getPhone()
成员方法名:getPhone
成员方法对象:public void com.qingfeng.springbootstudy.entity.User.setPhone(java.lang.String)
成员方法名:setPhone
成员方法对象:public final void java.lang.Object.wait() throws java.lang.InterruptedException
成员方法名:wait
成员方法对象:public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
成员方法名:wait
成员方法对象:public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
成员方法名:wait
成员方法对象:public boolean java.lang.Object.equals(java.lang.Object)
成员方法名:equals
成员方法对象:public native int java.lang.Object.hashCode()
成员方法名:hashCode
成员方法对象:public final native java.lang.Class java.lang.Object.getClass()
成员方法名:getClass
成员方法对象:public final native void java.lang.Object.notify()
成员方法名:notify
成员方法对象:public final native void java.lang.Object.notifyAll()
成员方法名:notifyAll

java反射学习笔记(常用的一些方法)相关推荐

  1. java反射 pdf_java反射学习笔记整理.pdf

    java反射学习笔记整理.pdf 还剩 15页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: Java 反射笔记 ...

  2. Java分布式应用学习笔记08JMX规范与常用的监控场景

    转自:Java分布式应用学习笔记08JMX规范与常用的监控场景 1.  JMX规范 JMX是"Java管理扩展的"的缩写,它和其他JavaEE类似也是曾经的Sun提出的一种规范(规 ...

  3. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

  4. java多线程学习笔记。

    java多线程学习笔记 线程的优缺点: 多线程的好处: 充分利用多处理核心,提高资源的利用率和吞吐量. 提高接口的响应效率,异步系统工作. 线程的风险: 安全危险(竞争条件):什么坏事都没有发生.在没 ...

  5. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  6. JAVA视频学习笔记-马士兵(六)

    `JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...

  7. JAVA视频学习笔记-马士兵(七)

    `JAVA视频学习笔记-马士兵` 容器_API_Collection1(20200622) 容器_Collection2(20200623) 容器_Iterator(20200624) 容器_Enha ...

  8. java mail 学习笔记

    JAVA MAIL 学习 笔记 电子邮件协议的简介 SMTP 简单邮件传输 SMTP是Simple Mail Transfer Protocol的简称,即简单邮件传输协议.该协议定义了邮件客户端软件和 ...

  9. 计算机、程序和 Java 概述 学习笔记

    计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. 计算机包括硬件( hardware ) 和软件( software) ...

最新文章

  1. 搜狗输入法漏洞获取系统权限0day再述
  2. Zookeeper服务器集群的搭建与操作
  3. 设计模式--原型(Prototype)模式
  4. object的实例是 python_Python:type、object、class与内置类型实例
  5. Java黑皮书课后题第4章:*4.18(学生的专业和年级)编程一个程序,提示用户输入两个字符,显示这两个字符代表的专业以及年级,第一个字符表示专业,第二个是一个数字字符1、2、3、4,输出对应结果
  6. linux内核启动过程2:保护模式执行流程
  7. LocalDateTime日期转换错误:JSON parse error: Cannot deserialize value of type java.time.LocalDateTime
  8. repo start master --all 和repo start --all master区别
  9. Exchange Server 2013 RTM发布
  10. 面向对象闲话(一)——什么是对象
  11. PHP爬虫常用技术:v8js(执行js代码)
  12. 大数据面试题——用shell打印200以内的质数
  13. 新疆旅游攻略-乌鲁木齐
  14. Jenkins 自动构建之日程表配置
  15. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)
  16. python爬虫selenium操作下拉框详解
  17. steam_api64.dll丢失的解决方法
  18. apache-通用语言库commons-lang
  19. 作者:曹丹星,就职于郑州商品交易所期货及衍生品研究所有限公司。
  20. 【知识兔】Excel教程 函数office软件 Excel素材 Excel网课 Excel入门

热门文章

  1. b+树阶怎么确定_B站公布年度弹幕,这个排名我不太服气
  2. socket网络编程tcp
  3. Unity3d--跨平台(一)
  4. Phoenix 关联映射 Hbase表 获取不到数据,upsert hbase 列名为16进制字符
  5. 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治
  6. Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌
  7. 阿里云高校“在家实践”计划,免费提供2.68亿小时算力!
  8. 阿里云与A站在一起后,悄悄干了件大事
  9. 【建议珍藏系列】如果你这样回答「什么是线程安全」,面试官都会对你刮目相看!...
  10. 刚刚,Python内幕被爆出!老码农:没控制住,心态已崩!