package club.reflection.entity.User;
/**
* 实体类
*
*/
public class User {
public String name;
private Integer age;
private String sex; public User(){ }
public User(String name,Integer age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
} public void eat(){
System.out.println("喜欢吃!!!!");
}
public void show(){
System.out.println("name:"+name);
System.out.println("tage:"+age);
System.out.println("sex:"+sex);
}
public void show(String xxx){
System.out.println("name:"+name);
System.out.println("tage:"+age);
System.out.println("sex:"+sex);
System.out.println(xxx);
}
}
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import club.reflection.entity.User.User; /**
* 反射实例 通过反射获取实体类中的属性方法
* @author Mr储
*
*/
public class RefDemo { public static void main(String[] args) {
try {
//获得Class对象()方法一通过Class静态方法forNmae();
Class cls1 = Class.forName("club.reflection.entity.User.User");
//通过class属性
Class cls2 = User.class;
//对象中通过Object类的getClass();
Class cls3 = (new User()).getClass();
System.out.println(String.class);
//通过Class的newInstance()获得对象的实例返回Object类型
Object obj = cls3.newInstance();
//强制转换为User类型
User user = (User)obj;
// System.out.println(cls3.getName());//club.reflection.instance.User获得类的完整名字
// System.out.println(cls3.getConstructors());//获得构造方法 for(Field f : cls1.getDeclaredFields()){
System.out.println(f);
}
System.out.println("++++++++++");
for(Field f : cls1.getFields()){
System.out.println(f);
}
/*//初始化一个User对象
User u1 = new User("张三",18,"男"); //获取属性
u1.show();
showField(u1);
u1.show();//属性赋值后的比较 //获取方法
showMethods(u1);*/
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* 获得类的属性
*/
public static void showField(Object obj){
try {
//将obj转化为Class对象
Class cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();//获得所有的属性
for(Field field : fields){
System.out.println(field.getName()+"\t"+field.getType().getName());//获取属性名和类型
//改变访问权限(使可以赋值)
field.setAccessible(true);
//给类中的属性赋值
if(field.getType().getName().equals("java.lang.String")){
field.set(obj, "名字");
}else if(field.getType().getName().equals("java.lang.Integer")){
field.set(obj, 222);
} }
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* 获取方法
*/
public static void showMethods(Object obj){
Class cls = obj.getClass();
Method[] methods = cls.getDeclaredMethods();//获取所有方法
for(Method m : methods){
System.out.println("方法:"+m);
System.out.println("方法名称:"+m.getName());
System.out.println("访问修饰符:"+Modifier.toString(m.getModifiers()));
System.out.println("返回值类型:"+m.getReturnType()); //获得参类型
Class[] ClassParameters = m.getParameterTypes();
for(Class c : ClassParameters){
System.out.println("参数类型:"+c.getName());
}
} try {
//获得对象的方法
Method show1 = cls.getMethod("show");
//执行方法
show1.invoke(obj); //获得对象的方法
/**
* "show"要执行的方法名
* String.calss 方法参数的参数类型
*/
Method show2 = cls.getMethod("show",String.class);
//执行方法
show2.invoke(obj, "反射调用传参");
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}

java中的反射简单实例的更多相关文章

  1. Java中的反射以及简单运用(原理+例子)

    Java反射 学习内容 1. 为什么要使用反射 2. 反射的概念 3. Java反射加载过程 4. 字节码对象理解 5. 获取字节码对象(.class)的三种方式 6. 反射常用API 8. 反射综合 ...

  2. 浅说Java中的反射机制(二)

    写过一篇Java中的反射机制,不算是写,应该是抄了,因为那是别人写的,这一篇也是别人写的,摘抄如下: 引自于Java基础--反射机制的知识点梳理,作者醉眼识朦胧.(()为我手记) 什么是反射? 正常编 ...

  3. 浅说Java中的反射机制(一)

    在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...

  4. 第89节:Java中的反射技术

    第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...

  5. java笔记十:java中的反射

    Java中,反射是一种强大的工具.它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接.反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而 ...

  6. 【Java基础】java中的反射机制与动态代理

    一.java中的反射机制 java反射的官方定义:在运行状态下,可以获取任意一个类的所有属性和方法,并且可通过某类任意一对象实例调用该类的所有方法.这种动态获取类的信息及动态调用类中方法的功能称为ja ...

  7. java中的反射(三)

    目录 一.反射 1.class类 2.访问字段 3.调用方法 4.调用构造方法 5.获取继承对象 6.动态代理 二.sping中的反射 本篇转自:https://depp.wang/2020/05/0 ...

  8. java中的反射(二)

    java中的反射(一):https://www.cnblogs.com/KeleLLXin/p/14060555.html 目录 一.反射 1.class类 2.访问字段 3.调用方法 4.调用构造方 ...

  9. Java中的反射和注解

    前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...

随机推荐

  1. Workflow 中做拒绝操作时强制输入拒绝信息

    在做AP发票审批驳回时,客户要求必须强制输入拒绝原因,代码如下: PROCEDURE Validate_Response ( Itemtype IN VARCHAR2, Itemkey IN VARC ...

  2. C/C++头文件使用 #ifndef #define #endif 的原因

    背景 在编译的时候,出现"redefine"的错误,最后检查才发现对应的头文件没有写正确的预编译信息: #ifndef _HeadFileName_H #define _HeadF ...

  3. linux命令crontab

    1.需求 服务端计划任务执行 2.例子 使用crontab命令 参考:http://justjavac.com/other/2013/09/22/linux-scheduled-task-cronta ...

  4. ubuntu

    mongoChef: http://3t.io/mongochef/download/core/platform/#tab-id-3 背景色改成豆沙绿: /usr/share/themes/Ambia ...

  5. visual studio 2013 中配置OpenCV2.4.13 姿势

    首先在path中添加 “C:\OpenCV\opencv\build\x64\vc12\bin”   (地址随实际变化) 注:添加的都是*86不使用*64 在visualstudio 2013中配置 ...

  6. Authorization in Cloud Applications using AD Groups

    If you're a developer of a SaaS application that allows business users to create and share content – ...

  7. 解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。

    解决mysql Table 'xxx' is marked as crashed and should be repaired的问题. 某个表在进行数据插入和更新时突然出现Table 'xxx' is ...

  8. Angular2 NgModule

    1. 说明 典型的模块是一个内聚的代码块,用来实现某种单一的功能.Angular2应用程序本质上是有一系列模块组成的,而且Angular 本身就是一组模块库.模块主要是导出一些东西——类,函数,值,供 ...

  9. strsep和strtok_r替代strtok

    char *strtok(char *str, const char *delim) 会修改数据源.外部加锁才线程安全(strtok执行结束再解锁执行另一个strtok循环知道工作完成) 主要是以互斥 ...

  10. 相机变换与Ray-Casting

    p { margin-bottom: 0.1in; direction: ltr; line-height: 120%; text-align: justify; orphans: 0; widows ...