java潜在类型机制的具体实现
发布日期:2021-10-06 14:20:08
浏览次数:2
分类:技术文章
本文共 1758 字,大约阅读时间需要 5 分钟。
潜在类型机制
Java编程思想的解释是:潜在类型机制是一种代码组织和复用机制,当用某个实例调用方法时,它只要求实现该实例实现了这些方法子集,而不用继承或实现某个接口,换句话说,程序不关心你什么类型,只要你的类型带有这些方法就行了,这样满足你可以横跨类继承结构,而调用不属于某个公共接口的方法。
个人的理解:程序在使用方法的时候并不用关心对象具体的类型,只要能够顺利的调用方法即可。再简单点理解,跟java的多态思想有些类似。
普通形式实现:
public class ClassTest1 { public static void main(String[] args) { new Action().act(new Bird()); new Action().act(new Plane()); }}interface Flyer { void fly(); void stopFly();}class Bird implements Flyer { @Override public void fly() { System.out.println("bird fly"); } @Override public void stopFly() { System.out.println("bird stop fly"); }}class Plane implements Flyer { @Override public void fly() { System.out.println("plane fly"); } @Override public void stopFly() { System.out.println("plane stop fly"); }}class Action { public staticvoid act(T actor){ actor.fly(); actor.stopFly(); }}
反射形式实现:
public class ClassTest1 { public static void main(String[] args) { new Action().act(new Bird()); new Action().act(new Plane()); }}interface Flyer { void fly(); void stopFly();}class Bird implements Flyer { @Override public void fly() { System.out.println("bird fly"); } @Override public void stopFly() { System.out.println("bird stop fly"); }}class Plane implements Flyer { @Override public void fly() { System.out.println("plane fly"); } @Override public void stopFly() { System.out.println("plane stop fly"); }}class Action { public static void act(Object actor){ Class class1 = actor.getClass(); try { Method method = class1.getMethod("fly"); method.invoke(actor); } catch (Exception e) { System.out.println(actor + "can't fly"); } try { Method method = class1.getMethod("stopFly"); method.invoke(actor); } catch (Exception e) { System.out.println(actor + "can't stop fly"); } }}
转载地址:https://blog.csdn.net/m0_37664906/article/details/78342761 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月06日 08时12分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【大话Mysql面试】-Mysql的索引为什么要使用B+树,而不是B树,红黑树等之类?
2021-06-29
【大话Mysql面试】-如何通俗易懂的了解Mysql的索引最左前缀匹配原则
2021-06-29
【大话Mysql面试】-MYSQL的两种存储引擎MyISAM与InnoDB的区别是什么?
2021-06-29
理解String.intern()和String类常量池疑难解析例子
2021-06-29
python flask打造前后端分离的口罩检测
2021-06-29
【大话Mysql面试】-MySQL基础知识
2021-06-29
【大话Mysql面试】-MySQL数据类型有哪些
2021-06-29
【大话Mysql面试】-MySQL数据引擎
2021-06-29
【大话Mysql面试】-常见SQL语句书写
2021-06-29
【大话Mysql面试】-SQL语句优化
2021-06-29
【大话Mysql面试】-Mysql事务以及隔离级别
2021-06-29
【大话Mysql面试】-Mysql索引
2021-06-29
【大话Mysql面试】-Mysql锁
2021-06-29
【大话Mysql面试】-Mysql常见面试题目
2021-06-29
08 【多线程高并发】Java线程间通信的方式
2021-06-29
【数据结构与算法】什么是跳表?通俗易懂来理解跳表
2021-06-29
【数据结构与算法】什么是图?图是什么?快速带你回顾图有关的知识点
2021-06-29
【数据结构与算法】什么是串?什么是KMP算法?字符串匹配是什么?
2021-06-29