本文主讲,java利用反射模式调用接口的实现类、抽象类的继承子类。下面请听一一道来

1.第一步在src下创建com.newer.reflex包

2.在com.newer.reflex包下面建立IReflex接口,代码如下:

=============================-- start --==================================

package com.newer.reflex;

/**

* 接口反射模式

* @author RSun

* @Date 2012-11-15上午10:07:21

*/

public interface IReflex {

public abstract void display(String str);

} //www.sctarena.com

=============================-- end --==================================

3.在com.newer.reflex包下面建立AbstractReflex.java抽象类,代码如下:

=============================-- start --==================================

package com.newer.reflex;

/**

* 抽象类反射模式

* @author RSun

* @Date 2012-11-15上午10:05:34

*/

public abstract class AbstractReflex {

public abstract void display(String str);

public void show(){

System.out.println("AbstractReflex非抽象方法show()被调用..." + this.getClass());

}

}

=============================-- end --==================================

4.在com.newer.reflex包下面建立A.java类,extends AbstractReflex 并实现 IReflex,代码如下:

=============================-- start --==================================

package com.newer.reflex;

/**

* A

* @author RSun

* @Date 2012-11-15上午09:52:34

*/

public class A extends AbstractReflex implements IReflex {

@Override

public void display(String str) {

System.out.println("A类输出:" + str);

}

}

=============================-- end --==================================

5.在com.newer.reflex包下面建立B.java类,extends AbstractReflex 并实现 IReflex,代码如下:

=============================-- start --==================================

package com.newer.reflex;

/**

* B

* @author RSun

* @Date 2012-11-15上午09:56:05

*/

public class B extends AbstractReflex implements IReflex {

@Override

public void display(String str) {

System.out.println("B类输出:" + str);

}

}

=============================-- end --==================================

6.在com.newer.reflex包下面建立反射调用工具类ReflexUtil.java类,代码如下:

=============================-- start --==================================

package com.newer.reflex;

import java.util.HashMap;

import java.util.Map;

/**

* 反射调用工具类

* @author RSun

* @Date 2012-11-15上午09:52:18

*/

public class ReflexUtil {

/** A类 **/

public static final int TYPE_A = 1;

/** B类 **/

public static final int TYPE_B = 2;

// 为什么不使用常量?map是为了灵活的CRUD,也可以从数据库配置读取

public static Map map = new HashMap();

static{

map.put(TYPE_A, "com.newer.reflex.A");

map.put(TYPE_B, "com.newer.reflex.B");

}

public static AbstractReflex getAbstractReflex(int type){

String clazzName = map.get(type);

try {

return (AbstractReflex)Class.forName(clazzName).newInstance();

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

public static IReflex getIReflex(int type){

String clazzName = map.get(type);

try {

return (IReflex)Class.forName(clazzName).newInstance();

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

}

=============================-- end --==================================

7.在com.newer.reflex包下面建立ReflexTest.java测试类,代码如下:

=============================-- start --==================================

package com.newer.reflex;

/**

* java反射调用类

* @author RSun

* @Date 2012-11-15上午09:45:02

*/

public class ReflexTest {

public static void main(String[] args) {

AbstractReflex re = ReflexUtil.getAbstractReflex(ReflexUtil.TYPE_A);

re.display("调用的是继承类A吗?");

re.show();

System.out.println();

AbstractReflex reb = ReflexUtil.getAbstractReflex(ReflexUtil.TYPE_B);

reb.display("调用的是继承类B吗?");

reb.show();

System.out.println();

IReflex ire = ReflexUtil.getIReflex(ReflexUtil.TYPE_A);

ire.display("调用的是实现类A吗?");

System.out.println();

IReflex ireb = ReflexUtil.getIReflex(ReflexUtil.TYPE_B);

ireb.display("调用的是实现类B吗?");

}

}

java反射出抽象类的实现类_java利用反射模式调用实现类相关推荐

  1. java的时间日期类_Java基础学习:日期时间类

    Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...

  2. JAVA利用反射模式调用实现类

    本文主讲,利用反射模式调用接口的实现类.抽象类的继承子类.下面请听屌丝一一道来 1.第一步在src下创建 com.newer.reflex包 2.在com.newer.reflex包下面建立 IRef ...

  3. java 反射 单例类_利用反射机制破坏单例模式

    简介 利用反射机制破坏了单例模式,这里以懒汉单例模式为例子进行操作. 之前利用反射也是改变了类中的private变量. 类中的private变量真的private么? 正常的单例模式的实现 这里采用了 ...

  4. java接口和抽象类区别是什么_Java接口和抽象类有什么区别

    接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制. 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现. ...

  5. java一个包有两个类_java一个包包含多个类 java 类包含类

    一个java工程可以有多个包含main方法的类吗? 每一个java文件都会有一个public static void main(String[] args)作为程序作为入口,一个类有且只有一个,但是可 ...

  6. java判断对象无数据_java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值...

    1.java利用反射机制判断对象的属性是否为空: Map validateMap = new LinkedHashMap(); validateMap.put("serial", ...

  7. java接口文件定义类_Java入门笔记(四)类、包和接口

    一.类 class public class Person{ String name; int age; Person(String name, int age){ this.name = name; ...

  8. java打印出所有的水仙花数_Java打印出所有的"水仙花数"

    Java打印出所有的"水仙花数" 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 &q ...

  9. java xml 实体类_java中的xml与实体类之间的映射

    实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...

最新文章

  1. ttf,woff2字体转化为png图片,python读取图片
  2. Android --- 自定义ImageView 实现圆形图片
  3. Python中为什么推荐使用isinstance来进行类型判断?而不是type
  4. PaddlePaddle训练营——公开课——AI核心技术掌握——第2章机器能“看”的现代技术
  5. jzoj4024-石子游戏【SG函数,博弈论】
  6. wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?
  7. 如何使用动态工具提示构建React Native图表
  8. 计算机网络怎么查看连接打印机驱动,如何检测网络打印机是否已成功连接到计算机[检测方法]...
  9. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性介绍(3)- 命名规则
  10. Java交替打印两个字符串
  11. tp5 自定义配置文件
  12. 【论文笔记】Learning Deep Face Representation
  13. 外贸出口流程全图(转)
  14. bib config_配置config.bib的注意事项以及错误分析——自己都要顶!
  15. HOUR 11 Developing Advanced Pointers
  16. 浪潮服务器 U盘安装 Windows server 2016系统
  17. win10 格式化 linux u盘,Win10怎么格式化u盘 Win10中对U盘格式化的两种常用方法
  18. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
  19. 建设银行对银行系金融科技转型的战略与思考
  20. 10本 Linux PDF 书籍免费分享

热门文章

  1. TypeError:proces_thread() takes 1 positional argument but 5 were given
  2. 在vue中实现中国地图
  3. 小学计算机实验考查总结,小学实验考查工作总结
  4. 怎么通过苹果HEIC图片转换器将heic格式转换为其他格式?
  5. 追梦算法----数字找朋友
  6. 深度学习(3)--反向传播算法
  7. 防御云服务器被攻击的三个方法
  8. 基于Springboot+vue的传统服装汉服销售购物商城 elementui
  9. Docker搭建 Gitlab CI Runner
  10. 简述局域网交换机与集线器的区别?