Java简单反射练习

昨晚看了Java的反射,附带做了下里面的反射练习,

案例:写一个“框架”,可以创建任意类的对象,并执行其中的任意方法;

前提:不能改变该类的任意代码,可以创建任意类的对象,可以执行任意方法

实现:1、配置文件+2、反射

步骤:

(1)创建一个简单Person类

public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void out(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}

(2)创建配置文件pro.properties

ClassName = testfs.Person
Method = out

(3)创建该框架类FsKj

public class FsKj {
@Test
public void testFsKj(){
//读取properties文件
Properties properties=new Properties();
String ClassName=null;
String Method=null;
try {
//获取文件中字段
properties.load(new FileInputStream("src/pro.properties"));
ClassName=properties.getProperty("ClassName");
Method=properties.getProperty("Method");
System.out.println("获取到文件字段:"+"类:"+ClassName+"方法:"+Method);
//创建字节码对象
Class classp = Class.forName(ClassName);
//获取构造方法
Constructor constructor = classp.getConstructor(String.class,int.class);
//创建对象
Object person = constructor.newInstance("张三",20);
//获取方法
Method method = classp.getMethod(Method);
//运行方法
method.invoke(person);
System.out.println("SUCCESS");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

(4)在该类的方法上添加@Test注解

(5)运行该方法

结果:

获取到文件字段:类:testfs.Person方法:out
姓名:张三 年龄:20
SUCCESS

原文地址:https://www.cnblogs.com/2019z/p/11422508.html

时间: 2024-10-06 08:15:45

Java简单反射练习的相关文章

java简单反射调用get,set方法

public Object setDate(ResultSet rs,Object o) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IntrospectionException, IllegalArgumentException, InvocationTargetException, SQLException{ Class cs = Class.forName(o.getClass

Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别(转)

一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:  其中 i.加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构.即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!.

Java:反射

初识Java反射机制: 从上面的描述可以看出Java的反射机制使得Java语言可以在运行时去认识在编译时并不了解的类/对象的信息,并且能够调用相应的方法或修改属性的值.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的内部信息(包括其modifiers(如public, static等).superclass(如Object).interfaces(如Serializable),也包括fields和methods的所有信息),动态地生

黑马程序员——JAVA基础-反射

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都只能都调用它的任意一个 方法和属性,这种动态获取的信息一级动态调用对象的方法的功能呢个称为java 的反射机制. 反射其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象, 并将字节码文件中的内容都封装成对象,这样便于操作这些成员.就是把JAVA类中的各种成

Java 类反射机制分析

一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 在Java中的反射机制,被称为Reflection.(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了.)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法.Reflection机制

java中反射

反射 避免硬编码 类对象 (存储了类的信息的对象 类加载的产物) Class 类名.class 直接获得类对象 (简单类型的类对象 int.class) 类的对象.getClass() Class.forName("类名") 通过类名主动加载一个类并获得类对象 类对象.newInstance() 创建类的对象 java中反射,布布扣,bubuko.com

黑马程序员-java基础-反射基础

------- android培训.java培训.期待与您交流! ---------- java的反射机制是java的特性之一,反射机制是构建框架技术的基础所在,使用反射可以使程序更加灵活,避免将程序写死在代码里.相对于很多初学者只接触过java基础的人,反射还是一个很朦胧难懂的概念,下面我们就来说一下反射的一些应用. java反射机制是指在运行状态中,动态获取信息以及动态调用对象方法的功能.java反射有3个动态性质:1.运行时生成对象实例,2.运行期间调用发放,3.运行时更改属性. 那么反射

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

java的反射

2017年 3月11号 周六 晴 前言:理解java的反射能更好的理解spring的运行机制. 因为spring的两大核心技术是Ioc(Inversion of Control,控制反转,有时也称为依赖注入,即DI,Dependcy Injection)和AOP(Aspect Oriented Programming,面向切面编程,即纵向的编程).Ioc实现原理是java反射机制,Aop实现原理是java的动态代理. java的反射机制概念: java的反射机制是运行状态中,对于任意一个类,都能