代码:

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

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

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

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  2. JAVA反射机制_获取字节码文件对象

    是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...

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

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  4. Java反射机制详解

    Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反 ...

  5. [转]Java反射机制详解

    目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ·获取一个对象的父类与实现的接口 ·获取某个类中的全部构造函数 - 详 ...

  6. Java反射机制demo(七)—反射机制与工厂模式

    Java反射机制demo(七)—反射机制与工厂模式 工厂模式 简介 工厂模式是最常用的实例化对象模式. 工厂模式的主要作用就是使用工厂方法代替new操作. 为什么要使用工厂模式?直接new不好吗? 直 ...

  7. Java反射学习:深入学习Java反射机制

    一.Java反射的理解(反射是研究框架的基础之一) Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的 ...

  8. 面试题之------Java 反射机制

    一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法.这种在运行时动态的获取信息以及动态调用对象的方法 ...

  9. 【转载】Java反射机制详解

    转自:http://baike.xsoftlab.net/view/209.html#3_8 1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对 ...

随机推荐

  1. Android-MediaPlayer-视频频播放-异步准备

    上两篇博客,Android-MediaPlayer-音频播放-普通准备,Android-MediaPlayer-音频播放-异步准备,主要是讲解了音频(.mp3文件)音乐

  2. urlrewrite重写url(转)

    环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...

  3. shell备份文件时加上时间戳

    1.在root目录下新建backup_date文件,写入echo _back_`date '+%Y%m%d%H%M%S'` [root@iZbp10er5cziaoscpe3x0hZ ~]# vi b ...

  4. Android实现表单提交,webapi接收

    1.服务端采用的是.net的WEBAPI接口. 2.android多文件上传. 以下为核心代码: package com.example.my.androidupload; import androi ...

  5. .Net 数据缓存浅析

    目录 1场景出发 1.1数据请求 1.2优化改进 2缓存 3缓存进阶 3.1缓存清除 3.2有效性 3.3线程安全 4适用场景和优劣 4.1适用场景 4.2优劣 5结语 1场景出发 1.1数据请求 小 ...

  6. [uwp]MVVM之MVVMLight,一个登录注销过程的简单模拟

    之前学MVVM,从ViewModelBase,RelayCommand都是自己瞎写,许多地方处理的不好,接触到MVVMLigth后,就感觉省事多了. 那么久我现在学习MVVMLight的收获,简单完成 ...

  7. sharepoint 2013工具

    caml designer 2013 生成caml工具 http://camlbuilder.codeplex.com/ 设计工具 CamlDesigner2013 爬网工具 HtmlAgilityP ...

  8. 【Oracle 12c】最新CUUG OCP-071考试题库(54题)

    54.(12-15) choose the best answer: View the Exhibit and examine the structure of the ORDER_ITEMS and ...

  9. Comet OJ - Contest #0题解

    传送门 菜爆了--总共只有一道题会做的--而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂--歧视么-- \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}=y+z+2\sqrt{ ...

  10. VIO的Bundle Adjustment推导

    IMU模型和运动积分 $R_{\tiny{WB}} \left( t +\Delta{t} \right) = R_{\tiny{WB}} \left( t \right) Exp\left( \in ...