今天项目中遇到这样一个方法: 
public <T> void method(T var) 
不太明白什么意思,后来搜索下几篇文章,自己总结一下,和大家分享。 
先看例子: 
1.static void fromArrayToCollection(Object[] a, Collection<?> c) { 
    for (Object o : a) { 
        c.add(o); // compile-time error 
    } 

例子1中Collection<?>这种写法,在调用add方法时是会报错的,因为你不能将一个对象推送到未知类型的集合中,虽然改成Collection<Object> c,编译不出错,但把一个object当做泛型摆入集合中,显然也不合理。

2.static <T> void fromArrayToCollection(T[] a, Collection<T> c) { 
    for (T o : a) { 
        c.add(o); // Correct 
    } 

例子2中,我们使用了泛型,没有问题,注意:这里方法返回值前的泛型如果不加,会编译出错,这里<T>存在的作用,是为了参数中能够出现T这种数据类型。 
具体调用方法: 
Collection<String> cs = new ArrayList<String>(); 
Collection<Number> cn = new ArrayList<Number>();

String[] sa = new String[100]; 
Integer[] ia = new Integer[100]; 
Float[] fa = new Float[100]; 
Number[] na = new Number[100];

// T inferred to be String 
fromArrayToCollection(sa, cs);

// T inferred to be Number 
fromArrayToCollection(ia, cn);

// T inferred to be Number 
fromArrayToCollection(fa, cn);

// T inferred to be Number 
fromArrayToCollection(na, cn);

public <T> void method(T var)的更多相关文章

  1. public static void main(String[] args){} 关于Java main()方法

    是Java程序的入口方法,JVM在运行程序时,会首先查找main()方法. public是权限修饰符,表明任何类或对象都可以访问这个方法: static表明main()方法是一个静态方法,即方法中的代 ...

  2. public static void Invoke (Action action)

    using System; using System.Security.Principal; using System.Security.Permissions; namespace Demo { c ...

  3. public static void main(String[] args){}函数理解

    主函数的一般写法如下: public static void main(String[] args){…} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为publi ...

  4. public <T> void show(T t),void前面的泛型T是什么作用

    public <T>这个T是个修饰符的功能,表示是个泛型方法,就像有static修饰的方法是个静态方法一样. <T> 不是返回值,表示传入参数有泛型 public static ...

  5. public static void main(String[] args){}函数诠释

    public static void main(String[] args){}函数诠释 主函数的一般写法如下: public static void main(String[] args){-} 下 ...

  6. 浅析 public static void main(String[] args)

    最初接触Java程序的时候,老师就教导我们要从下面这句开始学起,据说是约定俗成的,所以直到今天,还是只知道java程序应该这么写,具体为什么这么写,鄙人惭愧. public class ClassNa ...

  7. 《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法

    public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法.其中,public是权限修饰符,表明任何类或对象都可 ...

  8. public static void speckOnWin7(string text),在win7中读文字

    public static void speckOnWin7(string text) {    //洪丰写的,转载请注明 try { string lsSource = ""; ...

  9. 主函数特别之处:public static void main(String[] args)

    public static void main(String[] args) public class Test_java {//主函数特殊之处 public static void main(Str ...

随机推荐

  1. Bootstrap介绍

    Bootstrap是基于HTML.CSS和JavaScript开源的前端开发工具包. 1.响应式布局: 效果:根据浏览器的宽度来调整页面布局. 例如: <html lang="en&q ...

  2. tomcat源码分析(二)启动过程

    在Catalina的load方法中,首先初始化Server组件. // Start the new server if (server instanceof Lifecycle) { try { se ...

  3. sql标识符和格式

    数据库名是一个标识符,表名也是一个标识符,在SQL SERVER中标识符分为两类: (1).常规标识符;(2).分隔标识符两者重要的区别:常规标识符必须严格遵守命名的规定,而分隔标识符则可以不遵守命名 ...

  4. 移动端touch事件影响click事件的相关解决方法

    preventDefault()的方法,阻止事件的默认行为. 在移动端,手指点击一个元素,会经过:touchstart --> touchmove -> touchend -->cl ...

  5. 基于Flash ActionScript 实现RTMP发布与播放媒本流

    1  为什么要采用Flash ActionScript实现RTMP协议发布或播放媒体流,播放媒体流,协议可控,比如对流媒体数加密,混音等. 2 核心思路使用Flash Socket建立TCP二进制传输 ...

  6. C++模板之类型与数据绑定

    有时候我们需要将类型与一些数据进行绑定,例如我们一般通过单例,将字符串与一个函数关联(一般称之为注册),之后通过字符串创建相关联的对象 class A { public: static A* Crea ...

  7. Flask -- 静态文件 和 模板渲染

    静态文件 一般用于存放图片,样式文件(css, js等) 保存位置:包中或者文件所在目录创建一个 static 目录 访问:在应用中使用 /static/...即可访问 , 更好的方式是使用url_f ...

  8. php+ajax的三级联动下拉菜单

    封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...

  9. VBS 选择文件夹框

    VBS 选择文件夹框   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 on error resume Next Const  ...

  10. hdu_5044_Tree(树链剖分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5044 题意:给一棵树,在点和边上操作 题解:树链剖分,剖完后用树状数组维护即可,因为只有加减操作,连树 ...