Groovy - 泛型
-
简述
泛型使类型(类和接口)在定义类、接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数为您提供了一种方法,可以通过不同的输入重复使用相同的代码。区别在于形式参数的输入是值,而类型参数的输入是类型。 -
通用集合
集合类(例如 List 类)可以被泛化,以便在应用程序中只接受该类型的集合。下面显示了广义 ArrayList 的示例。以下语句的作用是它只接受字符串类型的列表项 -List<String> list = new ArrayList<String>();
在下面的代码示例中,我们正在执行以下操作 -- 创建一个仅包含字符串的通用 ArrayList 集合。
- 向列表中添加 3 个字符串。
- 对于列表中的每个项目,打印字符串的值。
class Example { static void main(String[] args) { // Creating a generic List collection List<String> list = new ArrayList<String>(); list.add("First String"); list.add("Second String"); list.add("Third String"); for(String str : list) { println(str); } } }
上述程序的输出将是 -First String Second String Third String
-
通用类
整个类也可以泛化。这使得该类在接受任何类型并相应地处理这些类型方面更加灵活。让我们看一个示例,说明如何实现这一点。在下面的程序中,我们正在执行以下步骤 --
我们正在创建一个名为 ListType 的类。请注意放在类定义前面的 <T> 关键字。这告诉编译器这个类可以接受任何类型。所以当我们声明这个类的对象时,我们可以在声明中指定一个类型,该类型将在占位符 <T> 中被替换
-
通用类具有简单的 getter 和 setter 方法来处理类中定义的成员变量。
-
在主程序中,请注意我们可以声明 ListType 类的对象,但类型不同。第一个是 Integer 类型,第二个是 String 类型。
class Example { static void main(String[] args) { // Creating a generic List collection ListType<String> lststr = new ListType<>(); lststr.set("First String"); println(lststr.get()); ListType<Integer> lstint = new ListType<>(); lstint.set(1); println(lstint.get()); } } public class ListType<T> { private T localt; public T get() { return this.localt; } public void set(T plocal) { this.localt = plocal; } }
上述程序的输出将是 -First String 1
-