java反射机制_读取properties

代码:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 反射特点:
 * 可以在运行期间,动态加载一个类进来,动态new一个对象
 * 动态了解对象内部的结构,动态调用这个对象的某一些方法
 * 反射好处:
 * 在配置文件里只写类的名字,可以动态把类加载进来
 * @author Administrator
 *
 */
public class TestReflection {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{

        //String  str = "T";
        String str = ReadProperties.getClassName();

        //把类load到内存,返回Class类型。
        Class cls = Class.forName(str);
        Object o = cls.newInstance(); //new 一个对象

        //得到cls类所有的public方法
        Method[] methods = cls.getMethods();
        /*//读取所有方法名
        for(Method m :methods){
            System.out.println(m.getName());
        }*/

        //调用方法 m2
        for(Method m :methods){
            if(m.getName().equals("m2")){
                //可变参数的方法,o是new的对象
                m.invoke(o);

            }

            if(m.getName().equals("m1")){
                //可变参数的方法
                m.invoke(o,1,9);
                //得到m1方法的参数类型
                for(Class paramType : m.getParameterTypes()){
                    System.out.println(paramType.getName());
                }
            }
            if(m.getName().equals("getS")){
                //得到getS方法的返回值类型
                Class returnType = m.getReturnType();
                System.out.println("getS returnType is :"+returnType);

            }
        }

    }
}

class T {
    static{
        //测试是否类是否load到内存
        System.out.println("T  loaded...");
    }

    public T(){
        //测试T是否被调用
        System.out.println("T  constructed...");
    }
    int i;
    String s;

    public void m1(int i,int j) {
        this.i = i+j;
        System.out.println("i ="+this.i);
    }
    public void m2(){
        System.out.println("m2 invoked...");
    }

    public String getS() {
        return s;
    }
}

读取properties配置的代码:

配置文件内容:

Class=T

import java.io.InputStream;
import java.util.Properties;
public class ReadProperties {

 static private String className = null;
 static{
  loads();
 }
 synchronized static public void loads(){
  if(className == null)
  {
   InputStream is = ReadProperties.class.getResourceAsStream("/test.properties");
   Properties dbProps = new Properties();
     try {
        dbProps.load(is);
        className = dbProps.getProperty("Class");

      }
      catch (Exception e) {
        System.err.println("不能读取属性文件. " +
       "请确保配置文件在CLASSPATH指定的路径中");
      }
  }
 }
 public static String getClassName() {
  if(className==null)
   loads();
  return className;
 }

}

运行结果:

T loaded...
T constructed...
m2 invoked...
i =10
int
int
getS returnType is :class java.lang.String

时间: 2024-10-03 18:24:20

java反射机制_读取properties的相关文章

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

JAVA基础整理-80.Java反射机制

Java什么是反射机制?反射机制的概念 在 ORM (Object Relational Mapping 对象关系映射)中间件的实现中,运用 java 反射机制可以读取任意一个 JavaBean 的所有属性,或者给这些属性赋值. Class labelCls=label1.getClass(); //label1为 JLabel 类的对象 Java反射在类中的应用: 通过反射访问构造函数(方法) 为了能够动态获取对象构造方法的信息,首先需要通过下列方法之一创建一个 Constructor 类型的

什么是Java反射机制,有什么作用

什么是Java反射机制? Java反射机制是 Java 语言的一个重要特性,它在服务器程序和中间件程序中得到了广泛运用.在服务器端,往往需要根据客户的请求,动态调用某一个对象的特定方法.此外,在 ORM 中间件的实现中,运用 Java 反射机制可以读取任意一个 JavaBean 的所有属性,或者给这些属性赋值 通过反射机制,可以在运行的时候访问到对象的属性.方法.构造方法等等 哪些地方用到反射机制? 其实我们都用过反射机制,只是并不知道它是反射机制而已.比如我们使用JDBC连接数据库的时候(Cl

java反射机制例子,反编译,以及通过读取配置文件降低耦合

本文不多做文字描述,通过代码可以说明一切,简单直观. //这边以反编译String类为例子,将反编译结果输入到文件. 1.ReflectTest.java 1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.FileWriter; 4 import java.lang.reflect.Constructor; 5 import java.lang.reflect.Field; 6 import java.lan

利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换

作者:54dabang 在spring的学习过程之中,我们可以看出通过配置文件来动态管理bean对象的好处(松耦合 可以让零散部分组成一个整体,而这些整体并不在意之间彼此的细节,从而达到了真正的物理上的疏散耦合,而非逻辑,有了IOC之后,我们可以让SPRING充当各框架中的整合器,把技术框架进行完美的结合). Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象.Java动态加载类主要是为了不改变主程序代码,通过修

【转载】Java反射机制详解

转自:http://baike.xsoftlab.net/view/209.html#3_8 1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 2反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个

java反射机制概述

一.反射 1.概述: JAVA反射机制是在运行状态中,对于任意一个类,都能够创建该类对象,调用这个类的所有属性和方法包括构造方法: 2.字节码文件 1)概述: 类加载器负责将.class文件加载到内在中,并为之生成对应的Class对象 2)字节码文件对象的三种获取方式 A:Object类的getClass()方法 B:所有类包括基本数据类型的静态属性class 如:int.class; String.class C:Class类中静态方法forName(String className) //参

Java反射机制详解

Java反射机制详解 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制. 1.关于Class 1.Class是一个类,一个描述类的类(也就是描述类本身),封装了描述方法的Method,描述字段的Filed,描述构造器的Constructor等属性    2.对象照镜子后(反射)可以得到的信息:某个类的数据成员名.方法和构造器.某个类到底实现

java 反射机制的概念

java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ·获取一个对象的父类与实现的接口 ·获取某个类中的全部构造函数 - 详见下例 ·通过反射机制实例化一个类的对象 ·获取某个类的全部属性 ·获取某个类的全部方法 ·通过反射机制调用某个类的方法 ·通过反射机制操作某个类的属性 ·反射机制的动态代理 4反射机制的应用实例 ·在泛型为Integer的Arr