ava_212_反射机制_动态操作_构造器_方法_属性_练习
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_反射机制_动态操作_构造器_方法_属性_练习相关推荐
- java 反射动态修改数据类型_[Java-基础]反射_Class对象_动态操作
动态性 动态语言 在程序运行时,可以改变程序结构或变量类型,典型的语言: Python,ruby,javascript 如: function test(){ var s = "var a= ...
- Java 反射机制和动态代理是基于什么原理,了解过吗?
工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1."知其然不知其所以然". 做了多年技术,开发了 ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...
方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...
- JavaME程序 Run Anywhere-- 利用反射机制来动态加载声
让JavaME程序 Run Anywhere-- 利用反射机制来动态加载声 时间:2008-02-23 09:26来源:互联网 让JavaME程序 Run Anywhere -- 利用反射机制来动态加 ...
- 利用java反射机制进行对象操作
我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子:首先,我建立一个bean pu ...
- Java反射机制和动态代理实例
反射机制是Java语言的一个重要特性,允许用户动态获取类的信息和动态调用对象的方法. 通过给定类的名字,通过反射机制就可以获取类的所有信息. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道 ...
- 公有变量java_Java反射机制(只可以访问公有的方法或者变量)
1.ji什么是Java的反射? 要让Java程序能够运行,就得让Java类被Java虚拟机加载.Java类如果不被Java虚拟机加载就不能正常运行.正常情况下,我们运行的所有的程序在编译期时候就已经把 ...
- 服务器操作系统百度文库,Linux操作系统配置服务器的方法及实现_百度文库(6页)-原创力文档...
L i n u x 是一个免费和自由传播的类 UNIX 操作系统,很多 UNIX 下的系统程 序.编程环境和应用程序都已经成功的移 植到了 Linux 上. Linux 系统是由全世界成 千上万的程序 ...
- 交互式多模型_论文深度提升的万金油方法——多属性决策 Ⅱ
在上篇论文深度提升的万能方法:多属性决策 Ⅰ中,介绍完属性值的三种形式,我们继续回到第一步--决策信息的获取. 属性权重的确定是多属性决策中的一个重要研究内容,近年来关于这方面的研究已受到人们的关注, ...
最新文章
- 一文读懂基于神经网络的图片风格转移
- 【数据处理】python变量分箱常见手法:分类型、数值型、卡方、自定义
- Bom技术类型的讲解
- Java中怎样使用反射根据属性名获取和设置属性的值
- 如何用python最快的获取大文件的最后几行
- 2022.2.17自制辣白菜
- Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
- ServiceStack.Ormlit 事务
- P1616 疯狂的采药(python3实现)--80分
- 13004.循环数组队列(C语言)
- protocol学习笔记001---RPC和HTTP协议之间的区别_与各自优势
- ubuntu 网络设置
- Spring Boot Controller层单元测试
- 数据分析第二章确定分析思路
- 偏差方差分解Python示例
- 专题详解-5G接入控制:CAG新特性(3)-end
- 饱和度,对比度,锐度
- PHP 实现301转向代码
- 十独吟 之一 李清照
- Ubuntu20.4安装百度云盘