Java反射实例

简介:

原文参考:
http://blog.csdn.net/sinat_38259539/article/details/71799078

①有两个提供服务的类ReflectService1,ReflectService2如下:

public class ReflectService1
{

public ReflectService1(){};
public void doService1(){
    System.out.println("Do Service1.");
}

}

public class ReflectService2
{

public ReflectService2(){};
public void doService2(){
    System.out.println("Do Service2.");
}

}

②有1个配置文件,指定Main方法中调用哪个服务的哪个方法:

class=ReflectService2
method=doService2

③主类ReflectMain中读取配置文件的配置,然后进行方法调用:

import java.io.File;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
public class ReflectMain
{

public static void main(String args[]){
    File springConfFile = new File("F:\\Learn\\Java\\workspace\\spring\\ReflectTest\\src\\spring.properties");
    Properties springConf = new Properties();
    try
    {
        springConf.load(new FileInputStream(springConfFile));
        //获取配置文件中配置的类
        String className = (String)springConf.get("class");
        System.out.println("className: " + className);
        //获取配置文件中配置的方法
        String method = (String)springConf.get("method");
        System.out.println("method: " + method);
        //获取到对应的类对象
        Class clazz = Class.forName(className);
        //Class cla = ReflectMain.class;
        System.out.println("clazz name: " + clazz.getName());
        //获取到该类对象下的对应方法
        Method m = clazz.getMethod(method, null);
        System.out.println("method name: " + m.getName());
        //通过类对象获取构造器
        Constructor c = clazz.getConstructor(null);
        System.out.println("constructor name: " + c.getName());
        //通过构造器构造新的对象实例
        Object o = c.newInstance(null);
        System.out.println("object name: " + o.toString());
        //调用对象实例的方法
        m.invoke(o,null);
    }catch(Exception e){
        e.printStackTrace();
    }
}

}

目录
相关文章
|
1月前
|
网络协议 算法 Java
|
1月前
|
Java 程序员
Java 异常处理与正则表达式详解,实例演练及最佳实践
在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。 当错误发生时,Java 通常会停止并生成错误消息,这个过程称为抛出异常。 try...catch 语句 try 语句允许您定义一段代码块,并在其中测试是否发生错误。 catch 语句允许您定义一段代码块,当 try 块中发生错误时执行该代码块。 try 和 catch 关键字成对使用,语法如下:
42 0
|
1月前
|
XML Java 数据库连接
谈谈Java反射:从入门到实践,再到原理
谈谈Java反射:从入门到实践,再到原理
58 0
|
1月前
|
Java 程序员 编译器
认识Java 的反射机制
反射Reflection被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。反射是一种功能强大且复杂的机制。使用它的主要人员是工具构造者,而不是应用程序员。
27 5
|
1月前
|
Java 关系型数据库 MySQL
在Java的反射中,Class.forName和ClassLoader的区别
在Java的反射中,Class.forName和ClassLoader的区别
35 3
|
30天前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
49 0
|
27天前
|
Java
java面向对象高级分层实例_实体类
java面向对象高级分层实例_实体类
10 1
|
6天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
6天前
|
Java
代码的魔法师:Java反射工厂模式详解
代码的魔法师:Java反射工厂模式详解
18 0
|
16天前
|
Java
Java通过反射获取类调用方法
Java通过反射获取类调用方法
18 0