Heim  >  Artikel  >  Java  >  So erstellen Sie eine Java-Erweiterungsmethode

So erstellen Sie eine Java-Erweiterungsmethode

WBOY
WBOYnach vorne
2023-05-26 23:23:121679Durchsuche

    Einführung

    Verwenden Sie Erweiterungsmethoden, um Methoden zu einem vorhandenen Typ „hinzufügen“, ohne einen neuen abgeleiteten Typ zu erstellen, neu zu kompilieren oder den ursprünglichen Typ auf andere Weise zu ändern. Obwohl eine Erweiterungsmethode eine Sonderform einer statischen Methode ist, kann sie wie eine Instanzmethode eines Erweiterungstyps aufgerufen werden. Bei in C# und Visual Basic geschriebenem Clientcode gibt es keinen wesentlichen Unterschied zwischen dem Aufruf einer Erweiterungsmethode und dem Aufruf der tatsächlich im Typ definierten Methode.

    Sprachen, die Erweiterungsmethoden unterstützen

    Tatsächlich unterstützen viele Programmiersprachen Erweiterungsmethoden wie C#, Visual Basic, Kotlin usw., aber unsere Java-Sprache unterstützt sie seit langem nicht mehr Für Java-Funktionen verspricht JDK16 die Bereitstellung dynamischer Bibliotheksaufruflösungen. Wenn wir jedoch als Hauptbenutzer von JDK8 auch Erweiterungsmethoden verwenden möchten, müssen wir einen anderen Weg finden.

    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()
    }

    Der Protagonist unterstützt keine Erweiterungsmethoden, aber wir können Erweiterungsmethoden über Plug-Ins implementieren ist eines der Plug-Ins.

    Lombok @ExtensionMethod

    Durch die Annotation Lombok @ExtensionMethod können wir statische Methoden generieren, die während der Programmkompilierung direkt aufgerufen werden. Schauen wir uns unten konkrete Beispiele an.

    /**
     * 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);
            }
        }
    }

    Sie können dem kompilierten Inhalt entnehmen, dass die Methode von „.isBlank()“ in „LombokTest.StringUtil.isBlank(““) konvertiert wurde. Auf diese Weise stellt Lombok uns den Syntaxzucker der Erweiterung zur Verfügung Methode. Wirklich so süß.

    Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Java-Erweiterungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen