Utilisez des méthodes d'extension pour "ajouter" des méthodes à un type existant sans créer de nouveau type dérivé, recompiler ou modifier de toute autre manière le type d'origine. Bien qu’une méthode d’extension soit une forme spéciale de méthode statique, elle peut être appelée comme une méthode d’instance d’un type d’extension. Pour le code client écrit en C# et Visual Basic, il n'y a pas de différence significative entre l'appel d'une méthode d'extension et l'appel de la méthode réellement définie dans le type.
En fait, de nombreux langages de programmation prennent en charge les méthodes d'extension, telles que C#, Visual Basic, Kotlin, etc., mais notre langage Java ne les prend pas en charge depuis longtemps dans JDK9. , il a commencé à prendre en charge l'extension par jmod. Pour les fonctions Java, le JDK16 promet de fournir des solutions d'appel de bibliothèque dynamique, mais en tant qu'utilisateurs clés du JDK8, si nous voulons également utiliser des méthodes d'extension, nous devons trouver un autre moyen.
/// 扩展方法 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() }
Java8 lui-même ne prend pas en charge les méthodes d'extension, mais nous pouvons implémenter les méthodes d'extension via des plug-ins. C'est la même chose que d'utiliser directement les méthodes d'extension. est l'un des plug-ins.
Grâce à l'annotation Lombok @ExtensionMethod, cela nous aide à générer des méthodes statiques qui sont directement appelées lors de la compilation du programme. Bien sûr, le plug-in IDEA peut fournir un meilleur support. Jetons un coup d'œil aux exemples spécifiques ci-dessous.
/** * 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); } } }
Vous pouvez voir dans le contenu compilé que la méthode a été convertie de "".isBlank() en LombokTest.StringUtil.isBlank(""). C'est ainsi que Lombok nous fournit le sucre syntaxique de l'extension. méthode. Vraiment si douce.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!