java反射小样例

java反射小样例

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

package reflect;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

interface fruit{
	public abstract void eat() ;
}
class Apple implements fruit{

	public void eat() {
		System.out.println("eat Apple");
	}
	
}
class orange implements fruit{

	public void eat() {
		System.out.println("eat orange");
	}
	
}
class init{
	public static Properties getPro() throws FileNotFoundException, IOException{
		Properties pro = new Properties() ;
		File f = new File("fruit.properties") ;
		if(f.exists()){
			System.out.println("有配置文件!");
			//从配置文件里读取键值对
			pro.load(new FileInputStream(f)) ;
		}else{
			System.out.println("没有配置文件!");
			pro.setProperty("apple", "reflect.Apple") ;
			pro.setProperty("orange", "reflect.orange") ;
			pro.store(new FileOutputStream(f), "FRUIT CLASS") ;
		}
		return pro ;
	}
}
class Factory{
	public static fruit getInstance(String className){
		fruit f = null ;
		try {
			//通过反射得到fruit的实例对象
			f = (fruit)Class.forName(className).newInstance() ;
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return f ;
	}
}
public class Hello {
	public static void main(String[] args) {
		try {
			Properties pro = init.getPro() ;
			fruit f = Factory.getInstance(pro.getProperty("apple")) ;
			if(f != null){
				f.eat() ;
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

java反射小样例

结果为:

有配置文件!
eat Apple

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118290.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • websocket token认证(https 不验证证书)

    直接上代码publicstaticStringtest(Stringurl,Stringhead,Stringbody)throwsException{//创建okHttpClient实例,忽略https证书验证OkHttpClientclient=newOkHttpClient().newBuilder().sslSocketFactory(getSSLSocketFactory())

    2022年4月18日
    216
  • 【转载】【转自AekdyCoin的组合数取模】

    【转载】【转自AekdyCoin的组合数取模】本篇文章主要介绍了”【组合数求模】转自AekdyCoin”,主要涉及到【组合数求模】转自AekdyCoin方面的内容,对于【组合数求模】转自AekdyCoin感兴趣的同学可以参考一下。这个表示的是从n个元素中选取m个元素的方案数。(PS.组合数求模似乎只用在信息学竞赛和ACM竞赛等计算机编程设计大赛中……,求在现实中的运用)可以知道当n,m 取得比较大的

    2022年7月23日
    9
  • Linux学习——Shell基础[通俗易懂]

    Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至编写一些程序。Shell 还是一个功能强大的编程,易编写、易调试、灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。用户通过shell向Linux内核发指令,Linux内核通过shell将返回

    2022年2月26日
    54
  • 设计模式–策略模式(Strategy)

    设计模式–策略模式(Strategy)

    2021年7月30日
    66
  • 新浪实时股票数据接口1

    新浪实时股票数据接口1股票数据的获取目前有如下两种方法可以获取:1.http/javascript接口取数据2.web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:http://hq.sinajs.cn/list=sh601006这个url会返回一串…

    2025年6月2日
    2
  • easyui window refresh 刷新两次解决办法

    easyui window refresh 刷新两次解决办法这样写刷新两次$("#changeMwsAccountWin").window(‘refresh’,"adsfasdf.php"’);$("#changeMwsAccountWin").window(‘open’); 这样写刷新一次$("#changeMwsAccountWin").window(‘open’);$("#changeMwsAccountWin").wi…

    2022年7月18日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号