java中接口的妙用(一)

[java][接口]Java接口的介绍和使用 常量抽象方法默认方法(Java 8)静态方法(Java 8)私有方法(Java 9) 阅读详情
java中接口的妙用(一):

一. 本例功能:

      接口作为参数,将调用者和实现彻底分离。


二. 实例代码:
1). IEvent.java:


package com.myjava.test;

//接口
public interface IEvent {
void OnEvent(int event, int data);


}


2). Func.java


package com.myjava.test;

//调用者
public class Func {
int type;
public Func(int type) {
this.type = type;
}


public void Func1(final IEvent listener) {
//do something,
if (type == 1) {
listener.OnEvent(1, 10);
}else if (type == 2){
//do another thing
   listener.OnEvent(2, 10);
}


   }


}




3). JavaTest.java
public class JavaTest {


/**
* @param args
*/
public static void main(String[] args) {
  JavaTest jt = new JavaTest();

//test case2: interface
jt.test2(1);
}

public void test2() {
    Func f = new Func(2);
    //实现interface
    f.Func1(new IEvent() {
            public void OnEvent(int event, int data) {
            switch(event) {
            case 1:
               System.out.println("res +:" + event + ";" +  (data+10));
               break;
            case 2:   
            System.out.println("res -:" + event + ";" +  (data-10));
            break;
            default:
            System.out.println("res donothing");
            break;
            }
           
            return;
            }
        });
    }
}


三. 说明:
1. 调用者是Func1,实现是new IEvent(注意:这里是直接用new关键字,即匿名实现),二者彻底分离,interface作为参数。
2. IEvent是interface,可我们照样用了new关键字,但必须同时要实现,而不能在外面实现;这种方式称为匿名实现,和匿名类中的匿名的理解方式一样。


3. 功能的理解(使用场合): 调用者由于不同的场合或条件,会以不同的参数调用interface的函数,从而达到不同的目的。同时,实现者(OnEvent函数)需要根据不同的
   参数做出不同的动作,这时,就可以用这种模式了。
4. 特点: 实现与调用者分离,通过interface来建立二者的关系;匿名实现接口的使用技巧。
5. 补充:当然,这里,也可以不用匿名类,而是实现一个类,这个类implements接口,调用的时候,将这个类的实例传到调用者中。如下:

   //将下面代码加入到JavaTest.java中,即可使用。

  //实现interface

   class EventImpl implements IEvent  {


public void OnEvent(int event, int data) {
switch(event) {
        case 1:
           System.out.println("res +:" + event + ";" +  (data+10));
           break;
        case 2:   
        System.out.println("res +:" + event + ";" +  (data+10));
           break;
        default:
        break;
       
}
   
    }
    
    private void test3() {
    EventImpl impl = new EventImpl();
        Func f = new Func(2);
        f.Func1(impl);
    }
    }

6. 从5中的例子可以看出,我们既不需要修改Func.java,也不需要修改IEvent.java,只需要修改IEvent接口的实现即可,对于在一个系统中,很多类都需要实现同一个接口,并且调用者的函数形式也一致,就可以用这种方式了。

7. 以上实例,是从项目中抽象出来,进行简化加工后的实现。

8. 测试结果:

res -:2;0

Qt Installer Framework 简单使用 qt installer framework 简单使用 阅读详情

相关推荐

【亲测】ubuntu20.4 安装CUDA11.8

一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境

weixin_40950590的博客 3895

Java接口:理解接口的作用及其用法

在编写Java程序的时候,我们需要定义很多类和方法,这些类和方法有时需要和其他程序进行交互,而接口就是用于定义这些交互方式的一种编程规范。接口简单来说就是一组方法的声明,这些方法没有方法体,所有实现这个接口的类都必须要实现这些方法。接口不关心具体实现细节,只关心类的行为是否符合约定。因此,接口可以作为一个标准,定义了类应该遵循的规则和约定。void eat();// 吃 void sleep();// 睡觉 void run();// 跑 }

小虎哥的技术博客 3804

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

Java接口的几种常见用法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33834137的博客 932

基于强化学习的工业SCR脱硝系统控制算法设计与实现

本文提出了一种基于强化学习的工业SCR脱硝系统智能控制方法。针对SCR系统存在的非线性、大滞后和多变量耦合等控制难点,研究采用混合建模方法构建了精度在5%以内的系统模型,并设计了专门的强化学习环境。该方法通过定义合理的动作空间和状态空间,结合物理约束设计损失函数,利用深度强化学习算法优化氨喷射控制策略。相比传统PID控制,该智能控制器能更好地适应烟气参数波动,实现NOx排放的稳定控制,为工业环保设施提供了更优的自动化解决方案。

huanghm88的专栏 1456

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

实战总结 | Java 接口和抽象类的使用场景

最近总结一下开发过程中,用到的 Java 接口和抽象类的使用场景,希望能给大家带来一些帮助和启发,也鼓励大家评论区留言自己的见解哟!

CREATE_17的博客 1900

【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手

本文介绍了如何通过API将Coze智能体集成到自有系统中的完整步骤:1)获取API token和个人工作空间的space_id;2)通过GET请求获取bot_id;3)使用POST发起对话请求,需包含bot_id、user_id和问题内容;4)通过两次API调用异步获取响应消息。文章还解释了Coze采用异步处理机制的原因,并预告了下期将讲解Java调用Coze接口的实现方法。整个过程需要使用API工具进行调试,确保了系统集成的可行性。

qq_27246521的博客 822

java: “abstract 抽象类” 与 “ interface 接口” 的妙用之道

abstract可以用来修饰类,方法抽象类不可以 实例化 new 对象,但必须要有构造器(构造方法) 用于继承中的子类的实例化全过程调用父类中的构造器。abstract 不能修饰 属性,代码块,构造器,因为无法重写abstract 不能修饰: private 修饰的方法,final修饰的方法,final 修饰的类,静态方法,都是无法重写的。抽象类中的抽象方法必须被所extends继承的类全部重写,不然编译无法通过。接口中的抽象方法必须被implements实现类全部重写,不然编译无法通过。

weixin_61635597的博客 1074

STM32F407+OV2640的DCMI+DMA双缓冲JPEG图像采集系统

在嵌入式视觉系统中,数字摄像头接口(DCMI)是MCU连接CMOS图像传感器的关键硬件通道,其与DMA协同实现零CPU干预的高速数据流采集;而JPEG作为一种基于DCT变换与量化压缩的有损图像格式,依赖传感器端硬件编码引擎才能满足实时性要求。理解DCMI三重同步时序(PCLK/HSYNC/VSYNC)与DMA双缓冲机制的流水线协作原理,是突破带宽瓶颈、避免FIFO溢出和帧丢失的技术基础。该架构广泛应用于智能硬件、工业检测与边缘AI前端等需低功耗、高可靠图像捕获的场景,本文以OV2640与STM32F407为

weixin_42103128的博客 156

Unity3D实现视频和模型融合效果

在Unity中,视频和3D模型融合通常涉及到将视频表面内嵌到3D场景中。视频不影响模型的展示, 这可以通过使用Shader和Texture来实现。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!提示:以下是本篇文章正文内容,下面案例可供参考本次介绍的就是视频和模型融合的实现,以后有其他的需要添加的会继续添加不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 5357

一文真正学懂Java接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

大河之犬的博客 692

引以为戒:一个“看不见”的空格,导致上下文超限——从 `llama-server` 错误说起

文章摘要: 本文分享了Qwen工程团队在部署llama-server时遇到的参数失效问题:明明设置了-c 32768上下文参数,却仍报错"超出4096 tokens限制"。经排查发现,问题根源是批处理脚本中续行符^后存在两个空格,导致参数被忽略。文章详细解析了Windows批处理中^的严格语法规则(必须紧贴前字符),对比了错误与正确写法的差异,并给出4条实用建议:使用编辑器显示空白字符、调试时关闭@echo off、预检完整命令、优先单行命令。最后强调在AI系统部署中,此类"隐

刘一说的IT专栏 541

func() java_java中接口的妙用(一) | 学步园

java中接口的妙用(一):一. 本例功能:接口作为参数,将调用者和实现彻底分离。二. 实例代码:1). IEvent.java:package com.myjava.test;//接口public interface IEvent {void OnEvent(int event, int data);}2). Func.javapackage com.myjava.test;//调用者publi...

weixin_29064009的博客 1365

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java接口的妙用

  接口的妙用                                            彭建雄关键字java,interface说明一气之作,文字功夫太差请大家谅解,希望能对研究COM的朋友带点帮助接口功能介绍1、‘纯’抽象类的实现(参见JAVA编程思想P/153)// Interface1.java 接口只负责描述自己的样子“对于实现我的所有的类

programlover的专栏 977

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java接口转换_java接口的妙用 (转)

java接口的妙用 (转)[@more@]接口的妙用彭建雄关键字XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />Java,interface说明一气之作,文字功夫太差请大家谅解,希望能对研究COM的朋友带点帮助接口功能介绍1、‘纯’抽象类的实现(参见JAVA编程思想P/153)// Inter...

weixin_33099377的博客 538

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java Function 的妙用:化繁为简的魔法师!

在 Java 开发中,Function是一个非常重要的函数式接口,它的存在让代码从繁琐走向简洁,从普通迈向优雅。今天,我们就来聊聊Function的那些“妙用”,以及它如何帮助开发者写出更简洁、更强大的代码。Function是 Java 8 中引入的一个函数式接口,定义在包中。它接受一个输入参数,并返回一个结果。TR很多时候,我们需要把一种类型的数据转换成另一种类型,比如将String转换成Integer。配合stream(),我们可以对列表中的数据批量转换。Function。

龚小帅的博客 2148

java反射注解妙用-获取所有接口说明

java反射注解妙用-获取所有接口说明前言使用 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进行了重构。而权限管理需要用到所有的接口配置,包括接口url地址,接口唯一编码等。想要收集所有的接口信息,如果工程接口很多,工作量可想而知。 这里用了反射...

qq_35798212的博客 915

java开发经验-面向接口编程中迭代器的妙用

java开发经验-面向接口编程中迭代器的妙用 使用接口进行编程 定义接口 /** * 5:36:11 5:37:02 5:37:15 5:37:45 6:19:54 6:21:04 6:22:22 6:23:04 * @author Administrator * 访问权限 类 包 子类 其他包 描述 public ∨ ∨ ∨ ...

悦分享 184

java 编程技巧-接口的妙用

java 编程技巧-接口的妙用 之前使用javafx的时候,我对于鼠标事件等等事件中的一些操作不是很理解。比如某个组件设置动作可以使用如下方式实现。 Button button = new Button(); button.setOnMouseClicked(()->{System.out.println("hello world")}); 我一直想不明白这是怎样一个操作,一次偶然的机会,我得以了解其中的原理。 原来这里使用了lambda函数,简化了接口的使用,本来是需要实例化一个接口的,如下代码所

valark的博客 237

【JAVA-Day23】Java反射的五大神奇妙用,令人惊叹

在本篇博客中,我将以默语博主身份,以深入研究和扩展的方式,探讨Java反射的五大神奇妙用,这些应用令人惊叹。我们将详细讨论反射的概念,如何操作类、属性、方法、构造器以及注解,最后提供完整的示例代码供您参考。在Java中,反射是一种允许程序在运行时检查和操作类、方法、字段等信息的能力。反射可以让您动态地获取类的结构和行为,而不需要在编译时明确知道这些信息。在Java编程中,反射是一项令人惊叹的技术,它赋予了我们在运行时探查、分析和操作类、方法、字段以及注解等元数据信息的能力。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 3万+

【JavaSE】还不懂接口的妙用?接口、接口的应用场景与接口的多态特性了解一下

学了那么久Java,还不理解接口有何用途?这篇文章带你一起深入了解接口的妙用,并带你体会接口的使用场景,掌握接口的多态特性。

黄小黄的博客 1257

妙用Java 8中的 Function接口 消灭if...else...

妙用Java 8中的 Function接口 消灭if…else… Function函数式接口

hcyxsh的博客 402

java-方法的妙用

java-方法的妙用 下面第一个就是使用传统的方法直接遍历 这里用调用方法输出更方便

m0_59605707的博客 85

妙用Java 8中的 Function接口 消灭if

定义一个抛出异常的形式的函数式接口, 这个接口只有参数没有返回值是个消费型接口/*** 抛异常接口**//*** 抛出异常信息* @param message 异常信息**/

2401_84048832的博客 770
上一篇: 文件遍历——指定遍历的层数
下一篇: “Unable to execute dex: Multiple dex files define L”问题解决
liranke
博客等级 码龄20年 4939粉丝 594原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值