文档章节

java实现反射,动态配置

eatnothing
 eatnothing
发布于 2015/10/20 07:48
字数 266
阅读 112
收藏 5
//java 实现反射
//首先定义一个接口Ishow.java
public interface Ishow(){
    void show(String str);
}
//建立一个demo.java文件实现接口
public class demo implements Ishow{
    public void show(String str){
        Ssytem.out.println(str);
    }
}
//建立test.java文件来测试
public class test{
public static void main(String args[]){
    String str ="p1.demo";  //包名+反射的类名
    try(){
    Class c1 =Class.forname(str);
    try(){
        Ishow a =(Ishow)c1.newInstance();    //    类加载机制
        a.show("qq");
    }catch(InstantiationException e){
        e.printStackTrace();
    }catch(IllegalAccessException e){
        e.printStackTrace();
    }catch(ClassNotFoundException e){
         e.printStackTrace();
            }
        }
    }
}


//java实现动态配置 实现反射
//Ishow 和demo 不变
public interface Ishow(){
    void show(String str);
}
public class demo implements Ishow{
    public void show(String str){
        Ssytem.out.println(str);
    }
}
建立PropertiesUtil.java
import java.util.Properties;
public class PropertiesUtil{
    Properties p = new Properties();  //new 一个properties对象
    try(){
        p.load(PropertiesUtil.class.getResourceAsStream("show.properties"));加载show.properties
    }catch(IOException e){
    	e.printStackTrace();
    }
    return p;
}
//建立 show.properties文件
show=p1.demo

//建立test.java文件来测试
public class test{
public static void main(String args[]){
//此处的包+类名是通过动态文件show.properties来加载的
   Properties p =Properties.getShowProperties();
   String str = p.getProperty("show");
    try(){
    Class c1 =Class.forname(str);
    try(){
        Ishow a =(Ishow)c1.newInstance();    //    类加载机制
        a.show("qq");
    }catch(InstantiationException e){
        e.printStackTrace();
    }catch(IllegalAccessException e){
        e.printStackTrace();
    }catch(ClassNotFoundException e){
         e.printStackTrace();
            }
        }
    }
}

 

 

© 著作权归作者所有

共有 人打赏支持
eatnothing
粉丝 37
博文 128
码字总数 68736
作品 0
昌平
程序员
私信 提问
加载中

评论(2)

eatnothing
eatnothing

引用来自“var name="小左工"”的评论

获取实例的时候不强转换?
需要转换 ,忘记打了,已修改
var name="小左工"
var name="小左工"
获取实例的时候不强转换?
Dubbo源码分析(7):Javassist字节码技术生成代理

Java动态编程的作用: 通过配置生成代码,减少重复编码和维护成本 我们常用到的动态特性主要是反射,在运行时查找对象属性、方法,修改作用域,通过方法名称调用方法等。在线的应用不会频繁使...

郑加威
09/28
0
0
最最最常见的Java面试题总结——第二周

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性   String类中使用字符数组:保存字符串,所以String对象是...

Amsour丶
08/13
0
0
云妹总结了一些最最最常见的Java面试题供大家参考

云妹导读:String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final cha...

阿里云科技快讯
08/17
0
0
老司机带你深入浅出Java反射

反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息 这里笔者就深入浅出总结下Java反射,...

小刀爱编程
11/07
0
0
Java中的反射|SquirrelNote

前言 本篇简介: 反射概述 反射具体功能实现 Android中的反射应用 一、反射(Reflection)概述 1.定义 是指在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;并且对于任何一个...

跳动的松鼠
2017/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

图形用户界面和交互输入方法---图形数据的输入功能

图形数据的输入功能 输入模式 回显反馈

中国龙-扬科
5分钟前
0
0
互联网企业安全之端口监控

背景 外网端口监控系统是整个安全体系中非常重要的一环,它就像眼睛一样,时刻监控外网端口开放情况,并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。 对安全人员来说,互联网...

Skqing
7分钟前
0
0
JavaMonitor

常规监控jvm,都是比较麻烦的。但是今天在开源中国,看到了一个web版的javaMonitor。 虽然要在服务器上安装,但是这样的话,大家都能看见了。所以还是非常six的。 发现写了这个的博主也是非常...

miaojiangmin
11分钟前
0
0
Redis实践系列丨Codis数据迁移原理与优化

Codis介绍 Codis 是一种Redis集群的实现方案,与Redis社区的Redis cluster类似,基于slot的分片机制构建一个更大的Redis节点集群,对于连接到codis的Redis客户端来说, 除了部分不支持的命令外...

中间件小哥
12分钟前
0
0
HTTP常用状态码(14种)

类别 原因短语 1xx 信息型状态码 接收的请求正在处理 2xx 成功状态码 请求正常处理完毕 3xx 重定向状态码 需要进行附加操作以完成请求 4xx 客户端错误状态码 服务器无法处理请求 5xx 服务器错...

vio小黑
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部