Les génériques de fonctions combinés à la réflexion créent un code flexible et évolutif. Les génériques fonctionnels prennent en charge les types paramétrés, tandis que la réflexion permet de récupérer des métadonnées sur les classes et les champs. En combinant les deux : vous pouvez créer des fonctions génériques acceptant des paramètres de types différents. Utilisez la réflexion pour obtenir des informations sur les classes et les champs, même si le type est déterminé au moment de l'exécution. Créez des fonctions flexibles pour différents types d'objets sans écrire de code spécifique au type.
Les génériques de fonctions Java combinés à la réflexion
Les génériques Java nous permettent de créer des types paramétrés afin que le type puisse être spécifié au moment de l'exécution. La réflexion nous permet de récupérer des métadonnées sur les classes, les méthodes et les champs. La combinaison de ces deux fonctionnalités puissantes vous permet de créer un code flexible et évolutif.
Les génériques de fonctions nous permettent de définir des fonctions qui acceptent des paramètres de différents types. Par exemple, nous pouvons créer une fonction générique qui échange deux éléments sans déclarer de type spécifique :
<T> void swap(T a, T b) { T temp = a; a = b; b = temp; }
Reflection nous permet d'accéder aux informations d'exécution sur les classes, les méthodes et les champs. Nous pouvons utiliser la réflexion pour :
La combinaison de génériques fonctionnels avec la réflexion nous permet de créer du code flexible et extensible pour différents types d'objets. Par exemple, nous pouvons créer une fonction générique pour convertir une valeur d'objet en chaîne quel que soit son type :
import java.lang.reflect.Field; public class ObjectToStringConverter { public static <T> String convertToString(T object) { StringBuilder sb = new StringBuilder(); Class<?> clazz = object.getClass(); // 获取所有字段 Field[] fields = clazz.getDeclaredFields(); // 遍历所有字段并追加其名称和值 for (Field field : fields) { try { field.setAccessible(true); sb.append(field.getName()).append(": ").append(field.get(object)).append("\n"); } catch (IllegalAccessException e) { e.printStackTrace(); } } return sb.toString(); } }
Exemple pratique :
Nous pouvons utiliser cette fonction pour différents types d'objet sans écrire de code spécifique au type :
// 创建一个 Person 类 class Person { private String name; private int age; // ... 构造函数和 getter/setter ... } // 创建一个 Book 类 class Book { private String title; private String author; // ... 构造函数和 getter/setter ... } // 测试 convertToString 函数 Person person = new Person("John", 30); Book book = new Book("Java Programming", "Author"); System.out.println(ObjectToStringConverter.convertToString(person)); System.out.println(ObjectToStringConverter.convertToString(book));
Sortie :
name: John age: 30 title: Java Programming author: Author
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!