Generics Types 泛型学习笔记<二>

Generics Types 泛型学习笔记<>

作者:冰云
时间:2004-02-24
联系:icecloud(AT)sina.com
Bloghttp://icecloud.51.net

首先我要特别感谢Schlemiel,他指出了类型协变的问题。其实我以前也看到过gigix翻译的那篇文,但是没看懂也没经大脑。经Schlemiel一提醒,我才意识到,这是泛型的规范。再翻出来看,如醍醐灌顶,真良师益友也。

我写文章的目的,就是为了能够找到更多同好进行交流。没有交流,没有氛围,绝对不会有提高。谢谢Schlemiel,每次读他的文章或评论,都能受到很大的启发。

如果需要深入了解泛型,请阅读程序员杂志20037期,或

http://gigix.cool2u.net/download/Variance_in_Java.pdf

 

ok,继续上次的学习笔记。这篇22页的文章正好读了3天。每天从地铁东四十条到西直门,每次读7页。如果哪位晚上6:30-7:00间看到地铁上有个人拿着本电脑书在读,不妨上来问问是不是俺 ^___^||

另:后面文中每章出现了不少重点,我就按照和文中章节一样的标题。Notes则自己编号。

这次特地把字体变为14px,不知道各位看起来如何啊?会不会太大?

5 泛型方法(函数)

 

根据上一条,既然通配符类型是只读的,那么怎样才能在函数中写入呢?这就引入了泛型函数(Generic Mehtods):

 

 

    <T> static void fromArrayToCollection(T[] a, Collection<T> c) {

       for (T o : a){

           c.add(o); //correct

       }

    }  

    Collection<Object> co = new ArrayList<Object>;

    Collection<String> cs = new ArrayList<String>;

    fromArrayToCollection(new Integer[100], co); <

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java Generics)可以提供编译时类安全检查以及运行时更强大的类转换能力。它可以减少代码的编写量,提高代码的可读性和灵活性。使用可以定义一个通用的方法,当传入不同的参数类时,可以做出不同的动作,例如可以定义一个操作数组的简单方法,无论传入的是什么类的参数,都能做出正确的操作。 ### 回答2: Java中的"<T>"是一种的表示方式,它可以用于定义一个方法。使用可以使方法在接受不同类的参数时具有更好的复用性和扩展性。 方法的定义需要在返回值类之前加上"<T>",表示该方法可以接受类为T的参数。例如,可以这样定义一个方法: public <T> void printArray(T[] array) { for (T element : array) { System.out.println(element); } } 在这个示例中,方法名为printArray,它接受一个类为T的数组作为参数,并遍历打印数组中的每个元素。这里的T可以是任何数据类,例如Integer、String等。 在实际调用该方法时,需要传入与T对应的具体类的数组。例如,可以这样调用该方法: Integer[] intArray = {1, 2, 3, 4, 5}; String[] stringArray = {"Hello", "World"}; printArray(intArray); printArray(stringArray); 通过使用方法,可以在不同的场景中复用同一个方法,而不需要针对不同的数据类编写多个重载的方法。这样可以提高代码的可维护性和重用性。 总之,Java中的"<T>"可以用于定义一个方法,使方法能够接受不同类的参数,在不同的场景中具有更好的复用性和扩展性。 ### 回答3: 在Java中,"<T>"是的表示方式,用于定义一个可以接收任意类的方法或者类。通过在方法或者类的声明中使用"<T>",我们可以在使用时指定具体的类。 下面是一个示例,展示了如何使用"<T>"在Java中定义一个方法: ```java public class GenericMethod { // 使用"<T>"定义一个方法,该方法可以接收任意类的参数,并返回该参数 public static <T> T printValue(T value) { System.out.println(value); return value; } public static void main(String[] args) { // 调用printValue方法,并指定参数为整数类 int intValue = GenericMethod.printValue(10); System.out.println("返回的整数值为:" + intValue); // 调用printValue方法,并指定参数为字符串类 String stringValue = GenericMethod.printValue("Hello World"); System.out.println("返回的字符串值为:" + stringValue); // 调用printValue方法,并指定参数为自定义类 MyClass myObject = new MyClass(); MyClass returnedObject = GenericMethod.printValue(myObject); System.out.println("返回的对象值为:" + returnedObject); } } // 定义一个自定义类 class MyClass { // 省略其他代码... } ``` 在上述代码中,我们定义了一个名为`printValue`的方法,使用"<T>"表示该方法可以接收任意类的参数。在`printValue`方法内部,我们使用了`System.out.println`语句打印参数值,并返回了该值。 在`main`方法中,我们调用了`printValue`方法三次,每次传入不同的参数类(整数、字符串和自定义类),并打印了返回的值。 总的来说,通过在Java中使用"<T>"定义一个方法,我们可以实现通用的、可以接收任意类参数的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icecloud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值