effecttive java一直推荐使用泛型,简单的看了一下泛型的使用

package cn.com.fzk;

import java.util.ArrayList;
import java.util.List; public class Test1 {
public static class InnerStaticGeneric<T> {
T t;
InnerStaticGeneric<T> instance = new InnerStaticGeneric<T>(); public static <T> InnerStaticGeneric<T> getInstance() {
return new InnerStaticGeneric<T>();
}
} public static void main(String[] args) {
String a = "a";
GenericTest.w(a);
Integer b = ;
GenericTest.w(b); }
} class GenericTest<T> {
public GenericTest() {
} T t; List<T> list = new ArrayList<T>(); public void add(T t) {
list.add(t);
} public T get(int index) {
return list.get(index);
} public static <T> GenericTest<T> getInstance() {
return new GenericTest<T>();
} public static <W> void w(W w) {
System.out.println(w.getClass().getName());
} public static <Q> void q(Q q) {
System.out.println(q.getClass().getName());
} public void t(T t) {
System.out.println(t.getClass());
}

public <E> void e(E e) {
          System.out.println(e.getClass());
      }

}

定义泛型类的时候,<>中的类型随便写,一个大写的字母就可以。在非静态方法中使用到的泛型的类型如果和定义的泛型类的大写的那个字母一样,就不需要制定类型了。如果方法中的泛型的类型未定义需要在方法中制定类型,在e()方法中的那个<E>就是相当于临时定义了一个类型E,如果不定义编译通不过。

静态方法中如果要使用泛型,前边必须定义这个临时类型。如果泛型类中定义了静态方法,其实这个静态方法中的泛型和泛型类中定义的泛型已经没有意义了。泛型在Java中本身就是一个语法糖,在编译的时候已经编译成了实际的类型,是动态的翻译类型,而静态方法是类未编译前就已经编译了,也就是静态方法中所有的类型都是已经确定好的。在泛型类中使用静态方法用来操作我感觉是没有意义的,唯一可能的原因就是这个静态方法从理论上来说应该属于这个类(单一职责)。同时也说明,任何一个非泛型类中,都可以定义一个泛型方法。向下面这样创建一个类及方法也是可以的。这种情况下,定不定义泛型类没有什么意义。

class GenericTest {
public static <W> void w(W w) {
System.out.println(w.getClass().getName());
} public static <Q> void q(Q q) {
System.out.println(q.getClass().getName());
} public <E> void e(E e) {
System.out.println(e.getClass());
}
}

如果想定义一个泛型类,在使用这个泛型类并且还想让这个泛型类定义出来的泛型起作用的话那么就不要用静态方法来操作泛型,new出这个泛型类在调用相应的方法。同时说明,泛型类做不了静态方法工具类。这是我的感觉。不知道是不是有问题。

java 泛型的简单使用的更多相关文章

  1. 利用Java泛型实现简单的泛型方法

    问题:编写一个泛型方法add(),当传入不同数字类型的值时,能够进行加法运算,(如可以传入int.long.float.double类型,但要对传入的值做一定的限定,如必须是数字). 解决:利用泛型编 ...

  2. JAVA泛型解释

    理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换(casting)上的操作: 1 List<Apple> box = ...; 2 Apple apple ...

  3. Java泛型简明教程

    泛型是Java SE 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的Java程序员不仅听说过,而且使用过它.关于Java泛型的教程,免费的,不免费的,有很多.我遇到的最好的教材 ...

  4. 浅析Java 泛型

    泛型是JavaSE5引入的一个新概念,但是这个概念在编程语言中却是很普遍的一个概念.下面,根据以下内容,我们总结下在Java中使用泛型. 泛型使用的意义 什么是泛型 泛型类 泛型方法 泛型接口 泛型擦 ...

  5. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  6. java泛型基础

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法.  Ja ...

  7. 初识java泛型

    1 协变数组类型(covariant array type) 数组的协变性: if A IS-A B then A[] IS-A B[] 也就是说,java中的数组兼容,一个类型的数组兼容他的子类类型 ...

  8. 【Java心得总结四】Java泛型下——万恶的擦除

    一.万恶的擦除 我在自己总结的[Java心得总结三]Java泛型上——初识泛型这篇博文中提到了Java中对泛型擦除的问题,考虑下面代码: import java.util.*; public clas ...

  9. 【Java心得总结三】Java泛型上——初识泛型

    一.函数参数与泛型比较 泛型(generics),从字面的意思理解就是泛化的类型,即参数化类型.泛型的作用是什么,这里与函数参数做一个比较: 无参数的函数: public int[] newIntAr ...

随机推荐

  1. c#关于路径的总结(转) 虚拟路径波浪号~和斜杠/的区别

    c#关于路径的总结(转)   来源:http://www.cnblogs.com/yugongmengjiutian/articles/5521165.html 前一段时间写代码时经常遇到获取路径问题 ...

  2. jquery的json的遍历

    jquery遍历解析json对象1: var json = [{dd:'SB',AA:'东东',re1:123},{cccc:'dd',lk:'1qw'}]; for(var i=0,l=json.l ...

  3. Away3D引擎学习笔记(二)CameraController相机控制的应用

    cameraController---相机控制器 这里针对Away3D里面封装的CameraController的区别和使用做些简单介绍.相机控制器的设计思路比较清晰,所以难点东西不多.使用方面附上源 ...

  4. Active Directory的基本概念

    前言 本文是面对准备加入Active Directory编程的初学者的一份文章,主要是讲解Active Directory(活动目录)的一些概念和相关知识.这篇文章本来是不想写下来的,因为概念性内容的 ...

  5. gulp配置,实例演示

    项目完成后的目录 我们所需要的插件为:gulp-minify-css gulp-concat gulp-uglify gulp-rename del 如下图所示,完成后的项目目录结构: 附加,获取pa ...

  6. Maven的配置地址

    http://howtodoinjava.com/tools/eclipse/how-to-import-maven-remote-archetype-catalogs-in-eclipse/ htt ...

  7. "fcitx按ctrl+space没反应"解决方法

    如果是KDM.GDM.LightDM,打开~/.xprofile.如果是startx.Slim,打开~/.xinitrc.(没有就新建一个) export GTK_IM_MODULE=fcitxexp ...

  8. Unity3D引擎之渲染技术系列一

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者.国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  9. Power of Cryptography - poj 2109

      Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 20351   Accepted: 10284 Description C ...

  10. 不依任何赖第三方,单纯用vue实现Tree 树形控件

    这几天接到一个需求,里面有需要做一个属性组件,找的第三方的,但是不能完全满足我的需求,有这时间,我就自己做个小轮子吧. 先看效果图(红点之前用的字体图标,是个对号,这里为了方便,用圆圈代替了选中状态, ...