0

0

Java扩展方法怎么创建

WBOY

WBOY

发布时间:2023-05-26 23:23:12

|

1866人浏览过

|

来源于亿速云

转载

    引言

    使用扩展方法可以在不创建新的派生类型、重新编译或以其他方式修改原始类型的情况下,“添加”方法到现有类型中。虽然扩展方法是静态方法的一种特殊形式,但它可以像扩展类型的实例方法一样被调用。对于用 c# 和 visual basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显的差异。

    支持扩展方法的语言

    其实比较多的编程语言都支持了扩展方法,如C#、Visual Basic、Kotlin等,但我们的Java语言就是迟迟不支持,在JDK9中开始支持以jmod方式扩展java功能,JDK16承诺给出动态库调用方案,但是作为JDK8的钉子户的我们如果也想使用扩展方法,就得另寻他路了。

    C#

    /// 扩展方法
    public static class ExpandMethod {
        /// 两个数相加
        public static int Sum(this int num,int num2) {
            return num + num2;
        }
    }
    public class Program {
        static void Main(string[] args) {
            /// 调用位置
            Console.WriteLine(3.Sum(2));
        }
    }

    Visual Basic

    Imports System.Runtime.CompilerServices
    Module Module3
        Sub Main()
            Dim ex As New ExampleClass
            ' 调用位置
            ex.ExampleMethod("Extension method")
        End Sub 
        Class ExampleClass
            ' Define an instance method named ExampleMethod. 
            Public Sub ExampleMethod()
                Console.WriteLine("Instance method")
            End Sub 
        End Class
        <Extension()> 
        Sub ExampleMethod(ByVal ec As ExampleClass, 
                ByVal stringParameter As String)
            Console.WriteLine(stringParameter)
        End Sub 
    End Module

    Kotlin

    // 扩展函数(本类中扩展方法)
    class Test1 {
        var name: String = "boyi.chen"
    }
    fun Test1.temp() {
        println("增加扩展函数,打印扩展类的属性name=${this.name}")
    }
    fun main(args: Array<String>) {
        // 调用位置
        Test1().temp()
    }

    主角登场

    Java8本身不支持扩展方法,但我们可以通过插件的方式实现扩展方法,用起来跟直接使用扩展方法一样一样的,Lombok就是其中的一款插件。

    Lombok @ExtensionMethod

    通过Lombok @ExtensionMethod注解,程序编译期间帮我们生成直接调用的静态方法,当然IDEA插件能提供更好的支持,下边看下具体的例子。

    /**
     * lombok测试
     *
     * @author reboot
     */
    @ExtensionMethod(StringUtil.class)
    public class LombokTest {
        public static void main(String[] args) {
            System.out.println("".isBlank());
        }
        /**
         * 字符串工具
         *
         * @author reboot
         */
        public static class StringUtil {
            /**
             * 字符串判空
             *
             * @param targetStr 目标str
             * @return boolean
             */
            public static boolean isBlank(String targetStr) {
                return targetStr == null || "".equals(targetStr);
            }
        }
    }

    编译后的内容可以看到方法已经从 "".isBlank() 转换为 LombokTest.StringUtil.isBlank(""),Lombok也正是通过这种方式提供给我们扩展方法的语法糖,真的好甜。

    Fellou
    Fellou

    具备主动智能的AI浏览器,被称为世界首个Agentic Browser

    下载

    立即学习Java免费学习笔记(深入)”;

    Java扩展方法怎么创建

    相关文章

    java速学教程(入门到精通)
    java速学教程(入门到精通)

    java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    WorkBuddy
    WorkBuddy

    腾讯云推出的AI原生桌面智能体工作台

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    Kotlin协程编程与Spring Boot集成实践
    Kotlin协程编程与Spring Boot集成实践

    本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

    124

    2026.02.12

    Kotlin协程编程与Spring Boot集成实践
    Kotlin协程编程与Spring Boot集成实践

    本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

    124

    2026.02.12

    idea快捷键大全
    idea快捷键大全

    本专题为大家提供idea快捷键相关的文章,帮助大家解决问题。

    174

    2023.08.03

    idea如何集成Tomcat
    idea如何集成Tomcat

    idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    173

    2024.02.23

    idea怎么配置maven
    idea怎么配置maven

    idea配置maven的步骤:1、打开intellij idea,并确保已安装maven integration插件,可以在"file"菜单中选择"settings",然后在"plugins"选项卡中搜索并安装maven integration插件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    131

    2024.02.23

    eclipse和idea有什么区别
    eclipse和idea有什么区别

    eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    152

    2024.02.23

    webstorm和idea有什么区别
    webstorm和idea有什么区别

    webstorm专为web开发量身定制,提供针对web开发语言的强大功能,而intellij idea是支持多种语言的多功能ide。它们的差异主要在于语言支持、web开发特性、代码导航、调试和测试功能、附加特性。最终选择取决于语言偏好和项目需求。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    344

    2024.04.09

    idea配置运行go语言环境
    idea配置运行go语言环境

    本专题整合了idea配置go开发环境相关教程,阅读专题下的文章了解更多详细内容。

    102

    2025.09.05

    Python异步编程与Asyncio高并发应用实践
    Python异步编程与Asyncio高并发应用实践

    本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

    37

    2026.03.12

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Kotlin 教程
    Kotlin 教程

    共23课时 | 4.3万人学习

    C# 教程
    C# 教程

    共94课时 | 11.2万人学习

    Java 教程
    Java 教程

    共578课时 | 81.1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号