java反射出抽象类的实现类_java利用反射模式调用实现类
本文主讲,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利用反射模式调用实现类相关推荐
- java的时间日期类_Java基础学习:日期时间类
Date 类 所在的包:java.util.Date Date 类表示特定的瞬间,精确到毫秒.创建对象的值为从1970年1月1日00:00:00 到当前系统显示时间所经历的毫秒数. 例如:public ...
- JAVA利用反射模式调用实现类
本文主讲,利用反射模式调用接口的实现类.抽象类的继承子类.下面请听屌丝一一道来 1.第一步在src下创建 com.newer.reflex包 2.在com.newer.reflex包下面建立 IRef ...
- java 反射 单例类_利用反射机制破坏单例模式
简介 利用反射机制破坏了单例模式,这里以懒汉单例模式为例子进行操作. 之前利用反射也是改变了类中的private变量. 类中的private变量真的private么? 正常的单例模式的实现 这里采用了 ...
- java接口和抽象类区别是什么_Java接口和抽象类有什么区别
接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制. 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现. ...
- java一个包有两个类_java一个包包含多个类 java 类包含类
一个java工程可以有多个包含main方法的类吗? 每一个java文件都会有一个public static void main(String[] args)作为程序作为入口,一个类有且只有一个,但是可 ...
- java判断对象无数据_java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值...
1.java利用反射机制判断对象的属性是否为空: Map validateMap = new LinkedHashMap(); validateMap.put("serial", ...
- java接口文件定义类_Java入门笔记(四)类、包和接口
一.类 class public class Person{ String name; int age; Person(String name, int age){ this.name = name; ...
- java打印出所有的水仙花数_Java打印出所有的"水仙花数"
Java打印出所有的"水仙花数" 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 &q ...
- java xml 实体类_java中的xml与实体类之间的映射
实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...
最新文章
- ttf,woff2字体转化为png图片,python读取图片
- Android --- 自定义ImageView 实现圆形图片
- Python中为什么推荐使用isinstance来进行类型判断?而不是type
- PaddlePaddle训练营——公开课——AI核心技术掌握——第2章机器能“看”的现代技术
- jzoj4024-石子游戏【SG函数,博弈论】
- wxpython下载缓慢_我可以在wxPython的wx.grid.Grid中加速优化GridCellAttr的使用吗?
- 如何使用动态工具提示构建React Native图表
- 计算机网络怎么查看连接打印机驱动,如何检测网络打印机是否已成功连接到计算机[检测方法]...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性介绍(3)- 命名规则
- Java交替打印两个字符串
- tp5 自定义配置文件
- 【论文笔记】Learning Deep Face Representation
- 外贸出口流程全图(转)
- bib config_配置config.bib的注意事项以及错误分析——自己都要顶!
- HOUR 11 Developing Advanced Pointers
- 浪潮服务器 U盘安装 Windows server 2016系统
- win10 格式化 linux u盘,Win10怎么格式化u盘 Win10中对U盘格式化的两种常用方法
- 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
- 建设银行对银行系金融科技转型的战略与思考
- 10本 Linux PDF 书籍免费分享
热门文章
- TypeError:proces_thread() takes 1 positional argument but 5 were given
- 在vue中实现中国地图
- 小学计算机实验考查总结,小学实验考查工作总结
- 怎么通过苹果HEIC图片转换器将heic格式转换为其他格式?
- 追梦算法----数字找朋友
- 深度学习(3)--反向传播算法
- 防御云服务器被攻击的三个方法
- 基于Springboot+vue的传统服装汉服销售购物商城 elementui
- Docker搭建 Gitlab CI Runner
- 简述局域网交换机与集线器的区别?