泛型的使用

Java泛型参数化类型示例
public class ClassTest {
  public static void main(String[] args) throws Exception {
    ParameterizedType type = (ParameterizedType) 
       Bar.class.getGenericSuperclass();
    System.out.println(type.getActualTypeArguments()[0]);
 
    ParameterizedType fieldType = (ParameterizedType) 
        Foo.class.getField("children").getGenericType();
    System.out.println(fieldType.getActualTypeArguments()[0]);
 
    ParameterizedType paramType = (ParameterizedType) 
        Foo.class.getMethod("foo", List.class)
        .getGenericParameterTypes()[0];
    System.out.println(paramType.getActualTypeArguments()[0]);
 
    System.out.println(Foo.class.getTypeParameters()[0]
        .getBounds()[0]);
  }
 
  class Foo<E extends CharSequence> {
    public List<Bar> children = new ArrayList<Bar>();
    public List<StringBuilder> foo(List<String> foo) {return null; }
    public void bar(List<? extends String> param) {}
  }
 
  class Bar extends Foo<String> {}
}

 

 

class java.lang.String
class ClassTest$Bar
class java.lang.String
class java.lang.StringBuilder
interface java.lang.CharSequence

 

### 使用方法及示例 是一种编程语言特性,允许在定义函数、类或接口时使用参数。这样可以编写更加通用和灵活的代码,同时保持类安全。以下是几种主流编程语言中使用方法和示例。 #### 1. 仓颉编程语言中的 在仓颉编程语言中,通过类参数 `T` 来实现,可以用于函数、接口等场景。以下是一个简单的函数 `max` 的实现[^1]: ```csharp func max<T>(a: T, b: T): T where T <: Comparable { return a > b ? a : b } ``` 此函数可以比较两个可比较类的值,并返回较大的一个。 #### 2. Rust 编程语言中的 Rust 中的允许为函数签名或结构体创建定义,使其能够处理多种具体数据类。以下是一个使用定义函数的示例[^2]: ```rust fn largest<T: PartialOrd + Copy>(list: &[T]) -> T { let mut largest = list[0]; for &item in list.iter() { if item > largest { largest = item; } } largest } ``` 此函数可以找到任意实现了 `PartialOrd` 和 `Copy` 特性的类数组中的最大值。 #### 3. Java 编程语言中的 Java 中的方法声明需要将参数列于返回值之前。以下是一个打印数组的方法示例[^3]: ```java public static <E> void printArray(E[] eArray) { for (E e : eArray) { System.out.print(e); } } ``` 此外,还可以通过方法返回指定类的对象。例如,从 `Map` 中获取值并转换为指定类[^4]: ```java private static <T> T getValue(Object key, Map<Object, Object> map) { return (T) map.get(key); } ``` #### 4. Python 中的(通过类提示) Python 中虽然没有传统意义上的,但可以通过类提示库(如 `typing`)实现类似功能。以下是一个使用的函数示例: ```python from typing import TypeVar, List T = TypeVar('T') def first_element(lst: List[T]) -> T: return lst[0] ``` 此函数可以接受任何类的列表,并返回该类的第一个元素。 --- ### 总结 使用可以提高代码的复用性和灵活性,同时减少冗余代码。不同编程语言对的支持方式有所不同,但核心思想一致:通过类参数实现通用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值