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.
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.
/// 扩展方法 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)); } }
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
// 扩展函数(本类中扩展方法) class Test1 { var name: String = "boyi.chen" } fun Test1.temp() { println("增加扩展函数,打印扩展类的属性name=${this.name}") } fun main(args: Array<String>) { // 调用位置 Test1().temp() }
Lombok @ExtensionMethod
/** * 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!