java-通过反射获取目标类的属性,方法,构造器
时间:2019-06-13
本文章向大家介绍java-通过反射获取目标类的属性,方法,构造器,主要包括java-通过反射获取目标类的属性,方法,构造器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先定义一个urse
1 package com.studay_fanshe; 2 3 public class User { 4 private String uname; 5 private int age; 6 private int id; 7 8 public User() { 9 } 10 11 public User(String uname, int age, int id) { 12 this.uname = uname; 13 this.age = age; 14 this.id = id; 15 } 16 17 public String getUname() { 18 return uname; 19 } 20 public void setUname(){ 21 this.uname="七月"; 22 } 23 public void setUname(String uname) { 24 this.uname = uname; 25 } 26 27 public int getAge() { 28 return age; 29 } 30 31 public void setAge(int age) { 32 this.age = age; 33 } 34 35 public int getId() { 36 return id; 37 } 38 39 public void setId(int id) { 40 this.id = id; 41 } 42 }
1 package com.studay_fanshe; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Field; 5 import java.lang.reflect.Method; 6 7 public class test01 { 8 public static void main(String[] args) throws Exception{ 9 10 Class clazz = Class.forName("com.studay_fanshe.User"); 11 //获取名字 12 String name = clazz.getName();//获取包名+类名:com.studay_fanshe.User 13 System.out.println(name); 14 String simpleName = clazz.getSimpleName();//获取类名:User 15 System.out.println(simpleName); 16 //获取属性 17 Field[] fields = clazz.getFields();//获取所有的公共的public修饰的属性 18 System.out.println(fields.length); 19 Field[] f = clazz.getDeclaredFields();//获取全部的属性包括私有的 20 for (Field field : f) { 21 /* private java.lang.String com.studay_fanshe.User.uname 22 private int com.studay_fanshe.User.age 23 private int com.studay_fanshe.User.id*/ 24 System.out.println(field); 25 } 26 //获取指定属性名的属性:private java.lang.String com.studay_fanshe.User.uname 27 Field uname = clazz.getDeclaredField("uname"); 28 System.out.println(uname); 29 //获取方法 30 Method[] methods = clazz.getMethods();//获取指定类中所有的方法 31 for (Method method : methods) { 32 System.out.println("所有的方法:"+method); 33 } 34 //获取指定类中公有的方法 35 Method[] m = clazz.getDeclaredMethods(); 36 for (Method method : m) { 37 System.out.println("public公有的方法"+method); 38 } 39 System.out.println("--------------------------------------------"); 40 /* public void setUname(String uname) { 41 this.uname = uname; 42 }*/ 43 //有参数类型必须传入参数类型对应的class对象 44 Method setUname = clazz.getDeclaredMethod("setUname", String.class); 45 System.out.println(setUname); 46 /* public void setUname(){ 47 this.uname="七月"; 48 }*/ 49 //没有参数类型那么参2我们就写null 50 Method setUname1 = clazz.getDeclaredMethod("setUname", null); 51 System.out.println(setUname1); 52 //获得构造器 53 Constructor[] dc = clazz.getDeclaredConstructors(); 54 for (Constructor constructor : dc) { 55 System.out.println("构造器:"+constructor); 56 } 57 Constructor dec = clazz.getDeclaredConstructor(String.class, int.class, int.class); 58 System.out.println("指定的构造器:"+dec); 59 } 60 }
原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/11017446.html
- 手把手教你运行apollo
- 归档模式下四种完全恢复的场景(r6笔记第8天)
- Git与Repo快速入门
- 10g,11g中的数据库克隆安装(r6笔记第7天)
- CVE-2017-16943 Exim UAF漏洞分析——后续
- “盲”逆向:iOS 应用 Blind 寻踪
- 根据时间字段导入数据的问题总结 (r6笔记第6天)
- Gnuboard 漏洞分析
- 一次数据库宕机问题的分析(r6笔记第5天)
- PWN学习之house of系列(一)
- 清理session的小插曲(二) (r6笔记第4天)
- 3.训练模型之在GPU上训练的环境安装
- 深度学习对话系统实战篇 -- 简单 chatbot 代码实现
- pangrank算法--PageRank算法并行实现
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PHP一个简单的无需刷新爬虫
- PHP实现函数内修改外部变量值的方法示例
- PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
- PHP命名空间简单用法示例
- PHP array_shift()用法实例分析
- PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
- 基于Python+QT的gui程序开发实现
- 使用tensorflow根据输入更改tensor shape
- 使用keras实现非线性回归(两种加激活函数的方式)
- Django Form设置文本框为readonly操作
- 浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
- keras和tensorflow使用fit_generator 批次训练操作
- php-fpm中max_children的配置
- python文件读取失败怎么处理
- PHP-FPM的配置与优化讲解