package com.test05.myTest;

class Fruit {     public String toString() {    return "Fruit"; } }

class Apple extends Fruit {    public String toString(){ return "Apple";    } }

class Person {    public String toString(){    return "Person";    } }

class ClassName<T> {//主类,文件名ClassName.java

     void show_1(T t){
System.out.println("show_1 "+ t.toString());
} <E> void show_2(E e){
System.out.println("show_2 "+e.toString());
} <T> void show_3(T t){
System.out.println("show_3 "+t.toString());
} public static void main(String[] args) {
ClassName<Fruit> o = new ClassName<Fruit>();
Fruit f = new Fruit();
Apple a = new Apple();
Person p = new Person();
System.out.println("show_1 演示________________________");
o.show_1( f );
o.show_1( a );
// o.show_1( p ); 楼主把这行代码去掉注释看一下,是不能编译通过的。因为在
// ClassName<Fruit>中已经限定了全局的T为Fruit,所以不能再加入Person;
System.out.println("show_2 演示________________________");
o.show_2( f );
o.show_2( a );
o.show_2( p );
System.out.println("show_3 演示________________________");
o.show_3( f );
o.show_3( a );
o.show_3( p ); }
}

输出:

show_1 演示________________________
show_1 Fruit
show_1 Apple
show_2 演示________________________
show_2 Fruit
show_2 Apple
show_2 Person
show_3 演示________________________
show_3 Fruit
show_3 Apple
show_3 Person

/* 而show_2 和show_3方法其实是完完全全等效的。意思就是说ClassName<T>中一旦
  T被指定为Fruit后那么show_1没有前缀<T> 的话,该方法中只能是show_1 (Fruit对象)

而你要是有前缀<T>或<E>的话,那么你就是告诉编译器对它说:这是我新指定的一个类型,
跟ClassName<T>类对象中的T没有半毛钱的关系。也就是说这个show_3中的T和show_2中的
E是一个效果,也就是你可以把show_3同等程度地理解为<E> void show_3(E e){~~~~~}

从上面我说的看,那就是 这个方法返回值前也加个<T>的话,这个T就代表该方法自己独有的某个类,而不去和类中限定的T产生冲突,你直接换成<E>会更容易理解的。*/

<T> 你可以理解为一个类型的声明,否则你的返回值和函数参数中突然出现了一个"T",编译器知道这是什么东西,肯定会报错,所以要从编译器的角度来理解这个问题.
就跟int a;以后才能使用a这个变量一个道理

泛型方法前为什么要加<T>的更多相关文章

  1. Ionic页面加载前 ionic页面加载完成 ionic页面销毁执行的事件

    ionic 中$ionicView.beforeEnter(页面刚加载前)  $ionicView.afterEnter  (页面加载完成) $destroy(页面销毁) 广播事件 //ionic c ...

  2. 在页面加载前先出现加载loading,页面加载完成之后再显示页面

    在此加入一个关于页面加载成功之前先展现一个loading的案例: 如下代码写入js里放在html头部即可实现需求:添加的可以自己在css文件设置宽高,也可以放入一个background的gif的loa ...

  3. 页面加载完成前的loading加载效果

    /*loading.js*/ // 加载HTML图 var _LoadingHtml = '<div id="loadingDiv" style="position ...

  4. UITableView个人使用总结【前篇-增量加载】

    UITableView现在边整边总结. 预计分两个部分,第一个部分主要是对UITableView本身属性的学习.第二个部分可能会是加上一个编辑按钮以及对列表的操作. 今天先学习第一部分. 第一部分,我 ...

  5. Python给数字前固定位数加零

    python中有一个zfill方法用来给字符串前面补0,非常有用 n = " s = n.zfill(5) " zfill()也可以给负数补0 n = "-123&quo ...

  6. jquery-mobile之loading加载自定义

    用jquery-mobile的时候,我们发现文档中loading是直接通过标签属性进行渲染,封装的函数必须通过点击按钮才能执行.而实际运用中,我们的加载开始和结束可能不需要点击,而是通过某个函数调用直 ...

  7. 从function前面的!想到的

    最近没事喜欢看看,一些js库的源码,结果发现库前不是加一个!就是加+或者一个(),心中猜出个大概知道这个是让函数自动执行,可是这么多符号达到同一个目的,原理是什么呢,下面做一下剖析: 先从IIFE开始 ...

  8. Web前端面试题集锦

    前端开发面试知识点大纲: 注意 转载须保留原文链接(http://www.cnblogs.com/wzhiq896/p/5927180.html )作者:wangwen896 HTML&CSS ...

  9. Android项目框架之图片加载框架的选择

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 从Android爆发以后,自定义的控件如EditTextWithDelete.ActionBar.P ...

随机推荐

  1. PHP-数据库永久连接

    以下为PHP官网上对数据库永久连接做的解释: 永久的数据库连接是指在脚本结束运行时不关闭的连接.当收到一个永久连接的请求时.PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接.如果存在,将 ...

  2. iOS - App 上架审核被原因拒总结

    1.未遵守苹果 iOS APP 数据储存指导方针 如果你的 App 有离线数据下载功能,尤其需要关注这一点.因为离线数据一般占用存储空间比较大,可以被重新下载和重建,但是用户往往希望系统存储空间紧时也 ...

  3. 【php】基础学习5

    主要包括PHP的错误.异常处理和调试.具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http- ...

  4. oc 异常处理

    #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...

  5. 在python中配置MySQL数据库

    MySQL数据库(1) 尽管用文件形式将数据保存到磁盘,已经是一种不错的方式.但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”) ...

  6. java jsch 登录linux系统避免手动输入Yes 或Always

    java jsch方法 登录linux系统, 要手动输入Yes No Always The host 10.202.84.7 is currently unknown to the system Th ...

  7. mysql 批量更新常用操作

    mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = ' ...

  8. java servlet中执行linux命令

    public HttpServletResponse execCmd(String cmd, HttpServletRequest request, HttpServletResponse respo ...

  9. SVN配置钩子

    安装测试环境:109  CentOS4.6 安装: SVN1.32http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz安装:解压 ...

  10. HTML: < 和 > 是何方神圣

    懂HTML的,都知道 < 表示 <,> 表示 >,那还有什么好写呢? 知道是知道,记不记得住是另外一回事,今天用到这两家伙,又给忘记了,还要特意查了下. 缩写不好记,如果能知道 ...