`

黑马程序员18-2:自定义泛型类、方法

 
阅读更多

------- android培训 java培训、期待与您交流!-------


package cn.itcast.p4.generic.define.demo;

import cn.itcast.p2.bean.Student;
import cn.itcast.p2.bean.Worker;

public class GenericDefineDemo3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		
		Tool<Student> tool = new Tool<Student>();
		
//		tool.setObject(new Worker());
//		Student stu = tool.getObject();
//		Tool tool = new Tool();		
//		tool.setObject(new Worker());		
//		Student stu = (Student)tool.getObject();
		
		
	}

}


package cn.itcast.p4.generic.define.demo;

public class GenericDefineDemo4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		
		Tool<String> tool = new Tool<String>();
		
		tool.show(new Integer(4));
		tool.show("abc");
		tool.print("hahah");
//		tool.print(new Integer(8));
		Tool.method("haha");
		Tool.method(new Integer(9));
	}
}


package cn.itcast.p4.generic.define.demo;

public class GenericDefineDemo5 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		InterImpl in = new InterImpl();
		in.show("abc");
		
		InterImpl2<Integer> in2 = new InterImpl2<Integer>();
		in2.show(5);
	}
}

//泛型接口,将泛型定义在接口上。 
interface Inter<T>{
	public void show(T t);
}

class InterImpl2<Q> implements Inter<Q>{
	public void show(Q q){
		System.out.println("show :"+q);
	}
}

class InterImpl implements Inter<String>{
	public void show(String str){
		System.out.println("show :"+str);
	}
}


package cn.itcast.p4.generic.define.demo;

/*
public class Tool {

	private Object object;

	public Object getObject() {
		return object;
	}

	public void setObject(Object object) {
		this.object = object;
	}
	
}
*/
//在jdk1.5后,使用泛型来接收类中要操作的引用数据类型。
//泛型类。什么时候用?当类中的操作的引用数据类型不确定的时候,就使用泛型来表示。 


public class Tool<QQ>{
	private QQ q;

	public QQ getObject() {
		return q;
	}

	public void setObject(QQ object) {
		this.q = object;
	}
	
	
	/**
	 * 将泛型定义在方法上。
	 * @param str
	 */
	public <W> void show(W str){
		System.out.println("show : "+str.toString());
	}
	//泛型的变量不能用length等方法,但是可以使用Object的方法
	public void print(QQ str){
		System.out.println("print : "+str);
	}
	
	/**
	 * 当方法静态时,不能访问类上定义的泛型。如果静态方法使用泛型,
	 * 只能将泛型定义在方法上。 
	 * @param obj
	 */
	public static <Y> void method(Y obj){
		System.out.println("method:"+obj);
	}
}


------- android培训 java培训、期待与您交流!-------


详细请查看:http://edu.csdn.net/heima -------
分享到:
评论

相关推荐

    黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义.rar

    《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》是为C++初学者量身定制的一份详细教学资源。这份讲义深入浅出地介绍了C++编程语言,并通过实际的机房预约系统项目,帮助学习者将理论知识与实践相...

    黑马程序员Javase笔记

    Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。

    黑马程序员匠心之作 C++教程_第5阶段-C++提高编程资料讲义.rar

    2. **类与对象**:类是C++中定义数据结构和方法的蓝图,而对象是类的实例。理解类和对象的关系,如何创建和初始化对象,以及如何使用成员函数和成员变量是这个阶段的重要内容。 3. **封装**:封装是隐藏实现细节,...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    day17 java

    1. **静态导入**(了解):允许直接引用类的静态属性或方法,减少代码中的类名引用。例如: ```java import static java.lang.System.out; import static java.lang.Math.*; ``` 2. **自动装箱/拆箱**:自动将...

    Java基础、面试等综合练习

    - **多线程**:掌握Thread类和Runnable接口,了解同步机制如synchronized关键字和wait/notify方法。 - **反射机制**:理解并运用Class类,动态加载类和创建对象。 2. **Java SE进阶**: - **泛型**:使用泛型...

    黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义.rar

    《黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义》是一份专为C++初学者设计的教程资料,由知名的黑马程序员团队精心制作。这份教程以STL(Standard Template Library,标准模板库)为...

    Java面试宝典2018年5月最新版

    《Java面试宝典2018年5月最新版》是一部专门为Java开发者准备的面试指导书籍,由黑马程序员团队精心编纂,旨在帮助求职者掌握Java面试中的核心知识点,提高面试成功率。书中涵盖了2018年最热门、最重要的Java技术...

    Java基础案例教程(第2版)-教学设计.zip

    学生会学习ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用,以及泛型、迭代器和枚举的概念。这部分知识在实际项目开发中应用广泛。 IO流是Java处理输入输出的重要工具,包括文件操作、网络通信等场景...

    传智播客 c/c++ 课件

    2. **模板**:泛型编程,用于编写可重用的代码。 3. **STL(Standard Template Library)**:容器(如vector, list, map)、迭代器、算法、函数对象。 4. **异常处理**:try-catch机制,用于捕获运行时错误。 5. **...

    程序设计教程 用C++语言编程 第二版 课后答案

    类是指封装了数据和操作数据的方法的数据类型。类可以实现数据的抽象和封装,提高代码的可重用性和可读性。 第7章 操作符重载 操作符重载是指对操作符的重新定义,使其可以用于自定义的数据类型上。操作符重载可以...

    Java基础学习视频-尚硅谷

    - **泛型概述**:泛型是Java 5引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的。 - **泛型应用**:在定义类、接口时可以使用泛型参数,增强代码的灵活性和复用性。 #### 8. ...

    C#程序设计基础入门教程(第2版)-源代码.rar

    泛型允许我们创建类型参数化的类和方法,提高代码的复用性。接口定义了一组方法签名,类可以实现接口以满足特定的需求。继承是面向对象编程中的一个重要概念,允许一个类(子类)继承另一个类(父类)的属性和方法。...

    JAVA面试题.rar

    这份"JAVA面试题.rar"压缩包文件显然包含了2019年黑马程序员毕业班的Java开发面试相关资料,对于准备Java开发者面试的人来说是一份宝贵的学习资源。下面我们将详细探讨一些Java面试中常见的知识点。 1. **基础概念*...

    c++课程学习笔记高亮版

    这是一份专为C++初学者和进阶者设计的学习资料,基于黑马程序员的C++课程,包含了全面且深入的C++知识点讲解。这份学习笔记采用Markdown格式,使得内容更加清晰易读,便于理解和复习。11/20的日期可能表示这是课程...

    进入IT企业必读的324个JAVA面试题

    2. **进阶知识**:JVM内存模型(堆、栈、方法区等),垃圾回收机制,类加载器,以及如何进行性能优化。 3. **设计模式**:单例、工厂、观察者、装饰者、适配器等经典设计模式的实现和应用。 4. **并发编程**:线程...

    C++基础&amp;核心讲义.zip

    C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动程序等各个领域。它的设计思想是“面向对象”...黑马程序员的C++视频教程应该会提供丰富的实例和练习,帮助初学者逐步精通C++。

    传智博客扫地僧c++基础和进阶课堂讲义完整版

    2. 模板:讲解模板类和模板函数,以及模板特化和偏特化。 3. 异常处理:介绍如何在程序中捕获和处理异常,提高程序的健壮性。 4. 内存管理:深入讲解堆和栈的区别,以及动态内存分配和释放。 5. 链表、队列、栈和...

    Java面试宝典2018-最全面试资料

    这份资料由黑马程序员精心编纂,集合了多家知名公司的面试题目,涵盖了广泛且深入的Java知识点。 首先,基础篇中,你需要熟悉Java语言的基础语法,包括但不限于数据类型(基本类型与引用类型)、运算符、流程控制...

    传智播客C++视频

    类是C++中面向对象编程的一个核心概念,它是一种用户自定义的数据类型,由成员变量(属性)和成员函数(方法)组成。通过类可以创建对象,每个对象都是该类的一个实例。类提供了封装、继承和多态性等特性,极大地...

Global site tag (gtag.js) - Google Analytics