Java入门——泛型(一)

Java入门——泛型(一)


泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用;更重要的是它保证了数据类型的安全。但是设计泛型并没有那么容易,一个泛型程序员要做的就是预测出所有类未来可能的所有的用途。

一:目标

  泛型程序设计分为3个等级,基本等级是使用泛型——典型的小ArrayList这样的集合——不必考虑它们的工作方式和原因。大多数程序猿将会停留在这个等级上,直到出现什么问题。


二:简单泛型类

package Sep22;

public class Pair<T> {//泛型可以有多个变量,比如public class Pair<T,K>{}
	private T first;//T 类型的变量
	private T second;//T 类型的变量
	public Pair(){//构造函数
		first=null;
		second=null;
	}
	public Pair(T first,T second){//构造函数覆写
		this.first=first;
		this.second=second;
	}
	public T getFirst() {
		return first;
	}
	public void setFirst(T first) {
		this.first = first;
	}
	public T getSecond() {
		return second;
	}
	public void setSecond(T second) {
		this.second = second;
	}

}

  然后用具体的类型替换类型变量就可以实例化对象,对于本例:

  

Pair<String>

  

  实例化对象后就是可以把构造器想象成普通类的构造器:

Pair<String>()
Pair<String>(String first,String Second)

  和方法

String getFirst()
String getSecond()
void setFirst(String)
void setSecond(String)

三:泛型方法

  泛型还可以在普通类中定义泛型方法  

Class ArrayAlg{
    public static <T> T getMiddle(T... a){
        return a[a.length/2];}
}

  


聪哥说

  1. 泛型类就是普通类的工厂,在实例化对象的时候生产相应类型的类  
时间: 2024-11-18 01:10:50

Java入门——泛型(一)的相关文章

Java入门(6)

阅读书目:Java入门经典(第7版) 作者:罗格斯·卡登海德 当方法在子类和超类都定义了时,将使用子类的定义:因此子类可以修改,替换或完全删除超类的行为或属性. 关键字super引用对象的上一级超类,可以引用超类的构造函数,引用超类的变量,引用超类的方法. 使用Java创建的所有类都是Java类层次结构的一部分,因为编写程序时如果不使用关键字extends,则默认超类为Object对象.所有类方法equals()和toString()都是自动从Object类继承来的方法. 数组列表ArrayLi

Java 5 泛型深入研究

Java 5泛型深入研究 上接<Java 泛型的理解与等价实现>,这个仅仅是泛型的入门.有博友反映泛型很复杂,难以掌握.鉴于此,写一片续集. 实际上泛型可以用得很复杂,复杂到编写代码的人员自己也难以看懂.这往往是对泛型的滥用或者类或接口本身设计不合理导致的. 看来用好泛型还真不容易,为此必须从根源说起. 一.逐渐深入泛型 1.没有任何重构的原始代码: 有两个类如下,要构造两个类的对象,并打印出各自的成员x. public class StringFoo { private String x;

Java - Java入门(2-1am)

第一讲.Java入门 1. 计算机语言是人和计算机进行交互的一种工具,人们通过使用计算机语言编写程序来向计算机施令,计算机则执行程序,并把结果输出给用户. 2. 机器语言:由0.1序列构成的指令码组成 如:10000000  加        10010000减          11110000 打印 3. 汇编语言:用助记符号描述的指令系统 如: Mov   A, #10; Mov   B, #20; Add   A,  B; 4. 高级语言: 面向过程的高级语言:程序设计的基本单元为函数

Java入门——面向对象基础(三)

Java入门——抽象类与接口的应用 本Blog内容 为抽象类与接口实例化 抽象类的实际应用——模板设计 接口的实际应用——制定标准 设计模式——工厂设计 设计模式——代理设计 为抽象类与接口实例化 利用多态性 1 package Sep16; 2 3 public class AbstractCaseDemo1 { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-gene

Java中泛型的协变

在工作中遇到一个问题,用代码描述如下: package test; import java.util.LinkedList; import java.util.List; public class ListTest {     public void func(List<Base> list) {     }     public static void main(String args[]) {         ListTest lt = new ListTest();         Li

Java 容器 & 泛型:一、认识容器

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 容器是Java语言学习中重要的一部分.泥瓦匠我的感觉是刚开始挺难学的,但等你熟悉它,接触多了,也就"顺理成章"地知道了.Java的容器类主要由两个接口派生而出:Collection和Map. 一.Collection vs Collections 首先,Collection 和 Collections 是两个不同的概念.之所以放在一起,是为了更好的比较.Collection是容器层次结构中

java入门第二步之helloworld【转】

前一篇博客已经介绍了jdk的安装:接下来我们就乘热打铁,完成第一个程序:helloworld(每学一样程序的新东西都是从实现helloworld开始的) 1.不是用开发工具IDE,只是使用记事本来实现: 打开计算本,在记事本上写如下代码,现在可以先不管是什么意思: public class HelloWorld { public static void main(String[] args) { System.out.println("这是我的第一个程序!!"); } } 保存,文件名

Java入门——多线程(二)

Java入门——多线程(二) 线程的状态 要想实现多线程,必须在主线程中创建新的线程对象.任何线程一般具有5种状态. 创建状态:用构造方法创建一个线程对象之后,新的线程就处于该状态.已经有了相应的内存空间和其他资源和其他资源. 就绪状态:线程进入线程队列排队,等待CPU服务. 运行状态:CPU处理,自动调用run()方法. 阻塞状态:就是在执行过程中暂时挂起.原因有:人为挂起,CPU的决定,sleep(),suspend(),wait()等方法.只有当引起阻塞的原因被消除后,线程才能转入就绪状态

Java 泛型 Java使用泛型的意义

Java 泛型 Java使用泛型的意义 @author ixenos 直接意义 在编译时保证类型安全 根本意义 a) 类型安全问题源自可复用性代码的设计,泛型保证了类型安全的复用模板 b) 使用复用性模板时不用手动强制类型转换 三种泛型实现方式的优缺点 C++:模板方式实现,在编译时完全展开并且支持偏特化,类型精度高,代码共享差: Java 5:擦除方式实现,仅用于编译时类型检查,在运行时擦除,向后兼容性好,代码共享好,类型精度非常差: C# 2.0:混合方式实现,在运行时展开特化,类型精度高,