文档章节

java实现反射,动态配置

eatnothing
 eatnothing
发布于 2015/10/20 07:48
字数 266
阅读 123
收藏 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
粉丝 38
博文 128
码字总数 68736
作品 0
昌平
程序员
私信 提问
加载中

评论(2)

eatnothing
eatnothing

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

获取实例的时候不强转换?
需要转换 ,忘记打了,已修改
var name="小左工"
var name="小左工"
获取实例的时候不强转换?
08-《深度拆解JVM》之JVM是如何实现反射的?

一、问题引入 今天我们来讨论一下 Java 里的反射机制。反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。 举例来说,我们可以通过 Class ...

飞鱼说编程
2018/10/12
0
0
最最最常见的Java面试题总结——第二周

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

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

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

阿里云科技快讯
2018/08/17
0
0
Java中的反射|SquirrelNote

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

跳动的松鼠
2017/11/28
0
0
老司机带你深入浅出Java反射

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

小刀爱编程
2018/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiDB 源码阅读系列文章(二十四)TiDB Binlog 源码解析

作者:姚维 TiDB Binlog Overview 这篇文章不是讲 TiDB Binlog 组件的源码,而是讲 TiDB 在执行 DML/DDL 语句过程中,如何将 Binlog 数据 发送给 TiDB Binlog 集群的 Pump 组件。目前 TiDB 在...

TiDB
17分钟前
0
0
Oracle第三方工具PLSQL注册码

注册码: Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number:601769 password:xs374ca 这个注册码是PLSQL 11版本通用的,刚刚在官网下载了最新版11.0.6版,用 此激活码成功...

小橙子的曼曼
19分钟前
0
0
深度学习为图片人物换装【python代码教程】

在观看本文之前,请答应我要善良。昨天预告了下,发现很多同学对这个模型都表示出兴趣,甚至有好多同学后台发来照片让我帮他们脱裤子。授人以鱼不如授人以渔,请这些同学好自为之~ 01效果演示...

阿里云官方博客
38分钟前
5
0
centos7安装RabbitMQ详细过程

由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang 1、环境: centos 7.1 内核版本3.10.0-229.el7.x86_64 Erlang 19.0.4版本 RabbitMQ 3.6.14版本 2、在线安装E...

秋至丶枫以落
今天
1
0
6个使用KeePassX保护密码的技巧

虽然安全是个深奥的主题,但是你可以遵循几个简单的日常习惯来减小攻击面。本文将解释确保密码信息安全的重要性,并给出如何充分利用KeePassX的建议。 日益互联的数字世界使安全成为一个重要...

Linux就该这么学
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部