这两天一直在学习Java中的泛型,发现泛型的出现帮我们苦逼程序猿解决了许多潜在的问题,并为我们程序猿编程减轻了工作量。下面把我的心得体会与大家共享一下(尽管只是些皮毛):泛型技术的由来:在集合中可以存储任意的对象,但是在取出时,如果要使用具体对象的特有方法时,需要进行向下转型,如果存储的对象类型不一致,在转型的过程中,就会出现ClassCastException异常。看下面一个例子:package cn.itcast.generic.demo;impor...
Java泛型与类型擦除“编译器会进行泛型擦除”是一个常识了(好吧,实际擦除的是参数和自变量的类型)。这个过程由“类型擦除”实现。但是并非像许多开发者认为的那样,在 <..> 符号内的东西都被擦除了。看下面这段代码:public class ClassTest {public static void main(String[] args) throws Exception {ParameterizedType type = (ParameterizedType)Bar.class.getGenericSuperclass();System.out.println(type.getActualTypeA...
泛型总结Java 泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型方法你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。下面是定义泛型方法的规则:所有泛型方法声明都有一个类型参数声...
一、List遍历Java中List遍历有三种方法来遍历泛型,主要为:1.for循环遍历2.iterator遍历3.foreach遍历package com.gmail.lsgjzhuwei;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import org.junit.Test;public class test {//第一种方法:for循环遍历@Testpublic void test1() {List<String> li = new ArrayList<String>();li.add("agad");li.add("1234");li.add("good");for (int i = 0; i <...
1.普通的泛型使用
在使用类的时候后面的<>中的类型就是我们确定的类型。publicclassMyClass1<T> {//此处定义的泛型是Tprivate T var;public T getVar() {return var;}publicvoid setVar(T var) {this.var = var;}
}
/*** 最普通的泛型使用,只有一个泛型类型*/@Testpublicvoid testMyClass1() {MyClass1<String> clazz = new MyClass1<String>();//此事确定对象对应的泛型T是Stringclazz.setVar("stringType");String str = clazz....
前言:无论何时,相信自己。相关文章:1、《夯实JAVA基本之一 —— 泛型详解(1)》2、《夯实JAVA基本之一 —— 泛型详解(2)》一、引入1、泛型是什么首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码:ArrayList<String> strList = new ArrayList<String>();
ArrayList<Integer> intList = new ArrayList<Integer>();
ArrayList<Double> doubleList = new ArrayList<Double>();大家对ArrayL...
泛型1.泛型的引入以及概述 (1).概述: 我们知道集合也是一种存储数据的工具,之前我们学习过StringBuffer和数组,这俩种在存储数据的时候都是明确了要存储什么类型的数据,如果 存储的数据类型和定义要存储的数据不一致的时候就会报错。那么集合为了数据存储的一致性,也提供了类似的机制,那么就是在创建集合对象 的时候要明确需要存储的数据类型是什么,这一个机制就叫做泛型。 (2).泛型定义:把类型明确的工作推迟到创建...
一、前言??最近依然在看《Java编程思想》这本书,说实话,非常晦涩难懂,除了讲的比较深入外,翻译太烂也是看不懂的一个重要原因。今天在看泛型这一章,也算是有些收获吧,所以写篇博客,记录一下其中比较容易遗忘的一个知识点:在泛型中,extends和super关键字的含义和用法。二、描述??学过Java的人应该都知道,extends和super这两个关键字的最常见的用法:extends:让一个类继承另外一个类;super:指向父类对象的引用;??但是在...
这里不讲泛型的概念和基础知识,就单纯的就我的理解说一下泛型中的<T>一. <T> 下面的一段码就可以简单使用了<T>参数,注释就是对<T>的解释。package xayd.hjj;import java.util.ArrayList;
import java.util.List;class A{}
class B{}
class C{}
class D extends C{}publicclass Test<T> extends ArrayList<T>{publicstatic <T> void main(String[] args) { Test<C> testC = new Test<C>();// testC = new Test<B>(); //编译错...
简单的泛型定义使用:public class GenericFoo<T> { private T foo;
public void setFoo(T foo){
this.foo = foo;
}
public T getFoo(){
return this.foo;
}
public static void main(String[] args){
//GenericFoo is a raw type, References to generic type GenericFoo<T> should be parameterized.
GenericFoo foo = new GenericFoo();
G...
在上篇《Java泛型的协变》这篇文章中遗留以下问题——协变不能解决将子类型添加到父类型的泛型列表中。本篇将用逆变来解决这个问题。实验准备 我们首先增加以下方法,见代码清单1所示。代码清单1/*** * 描 述:Exp3使用逆变<br/>* 作 者:jiaan.gja<br/>* 历 史: (版本) 作者 时间 注释 <br/>* @param itemList*/publicvoid doDecorate3(List<? super T> itemList, T t) {for(int i = 0; i < itemList.size(); i++) {System.out...
定义带泛型的类publicclass Cat<T> {//可以用T定义实例变量private T name;//可以用T定义形参//构造器没有<>public Cat(T name){this.name = name;}//可以作为返回值public T forget(){System.out.println("我叫啥来着?");returnthis.name;}publicstaticvoid main(String[] args){Cat<String> cat = new Cat<>("阿猫");System.out.println(cat.forget());}
}构造泛型对象可省略类型参数List<String> list = new ArrayList<>();
//...
java中的泛型方法:
是否拥有泛型方法。与其所在的类是否泛型没有关系。
泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后。返回值声明之前。
和泛型类一样,能够声明多个泛型,用逗号隔开。
一个static方法。无法訪问泛型类的类型參数。所以,若要static方法须要使用泛型能力。必须使其成为泛型方法。(通俗点说,假设方法參数里面有泛型,方法又是static。要能识别该方法參数,必须将该方法改为泛型方法,...
java使用泛型实现Bean类和Map的相互转换,使用泛型可以这带来了很多好处: 首要就是类型安全, Java 程序的类型安全。通过知道使用泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。 泛型允许编译器实施这些附加的类型约束。类型错误现在就可以在编译时被捕获了,而不是在运行时当作 ClassCastException 展示出来。 将类型检查从运行时挪到编译时有助于您更容易找到错误,并可提高...
package arraylist;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class FamousQuotes {private static ArrayList listOfFamousQuotes;private static ArrayList<String> listOfFamousQuotesTypechecked;public static void main(String[] args) {FamousQuotes app = new FamousQuotes();System.out.println("没有引用泛型添加三个人说的三句名言");app.bulidList();app.printList(...