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 static 
void 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Arrays的常用功能
下一篇:<? extends T>和<? super T>:上下界通配符的界限和使用

发表评论

最新留言

不错!
[***.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
【大话Mysql面试】-InnoDB可重复读隔离级别下如何避免幻读?MVCC和next-key是什么 2021-06-29
【大话Mysql面试】-Mysql如何恢复数据?如何进行主从复制?Binlog日志到底是什么? 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