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);
}
}
分享到:
相关推荐
《黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义》是为C++初学者量身定制的一份详细教学资源。这份讲义深入浅出地介绍了C++编程语言,并通过实际的机房预约系统项目,帮助学习者将理论知识与实践相...
Java是世界上最流行的编程语言之一,尤其在...总结来说,"黑马程序员Javase笔记"涵盖了Java的基础语法、内存管理、面向对象编程、集合框架以及泛型和Map等内容,这些都是成为一名合格Java开发者必须掌握的核心知识。
2. **类与对象**:类是C++中定义数据结构和方法的蓝图,而对象是类的实例。理解类和对象的关系,如何创建和初始化对象,以及如何使用成员函数和成员变量是这个阶段的重要内容。 3. **封装**:封装是隐藏实现细节,...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...
1. **静态导入**(了解):允许直接引用类的静态属性或方法,减少代码中的类名引用。例如: ```java import static java.lang.System.out; import static java.lang.Math.*; ``` 2. **自动装箱/拆箱**:自动将...
- **多线程**:掌握Thread类和Runnable接口,了解同步机制如synchronized关键字和wait/notify方法。 - **反射机制**:理解并运用Class类,动态加载类和创建对象。 2. **Java SE进阶**: - **泛型**:使用泛型...
《黑马程序员匠心之作 C++教程_第6阶段实战-基于STL泛化编程的演讲比赛资料讲义》是一份专为C++初学者设计的教程资料,由知名的黑马程序员团队精心制作。这份教程以STL(Standard Template Library,标准模板库)为...
《Java面试宝典2018年5月最新版》是一部专门为Java开发者准备的面试指导书籍,由黑马程序员团队精心编纂,旨在帮助求职者掌握Java面试中的核心知识点,提高面试成功率。书中涵盖了2018年最热门、最重要的Java技术...
学生会学习ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用,以及泛型、迭代器和枚举的概念。这部分知识在实际项目开发中应用广泛。 IO流是Java处理输入输出的重要工具,包括文件操作、网络通信等场景...
2. **模板**:泛型编程,用于编写可重用的代码。 3. **STL(Standard Template Library)**:容器(如vector, list, map)、迭代器、算法、函数对象。 4. **异常处理**:try-catch机制,用于捕获运行时错误。 5. **...
类是指封装了数据和操作数据的方法的数据类型。类可以实现数据的抽象和封装,提高代码的可重用性和可读性。 第7章 操作符重载 操作符重载是指对操作符的重新定义,使其可以用于自定义的数据类型上。操作符重载可以...
- **泛型概述**:泛型是Java 5引入的新特性,它允许程序员在编译时检查类型安全,并且所有的强制转换都是自动和隐式的。 - **泛型应用**:在定义类、接口时可以使用泛型参数,增强代码的灵活性和复用性。 #### 8. ...
泛型允许我们创建类型参数化的类和方法,提高代码的复用性。接口定义了一组方法签名,类可以实现接口以满足特定的需求。继承是面向对象编程中的一个重要概念,允许一个类(子类)继承另一个类(父类)的属性和方法。...
这份"JAVA面试题.rar"压缩包文件显然包含了2019年黑马程序员毕业班的Java开发面试相关资料,对于准备Java开发者面试的人来说是一份宝贵的学习资源。下面我们将详细探讨一些Java面试中常见的知识点。 1. **基础概念*...
这是一份专为C++初学者和进阶者设计的学习资料,基于黑马程序员的C++课程,包含了全面且深入的C++知识点讲解。这份学习笔记采用Markdown格式,使得内容更加清晰易读,便于理解和复习。11/20的日期可能表示这是课程...
2. **进阶知识**:JVM内存模型(堆、栈、方法区等),垃圾回收机制,类加载器,以及如何进行性能优化。 3. **设计模式**:单例、工厂、观察者、装饰者、适配器等经典设计模式的实现和应用。 4. **并发编程**:线程...
C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动程序等各个领域。它的设计思想是“面向对象”...黑马程序员的C++视频教程应该会提供丰富的实例和练习,帮助初学者逐步精通C++。
2. 模板:讲解模板类和模板函数,以及模板特化和偏特化。 3. 异常处理:介绍如何在程序中捕获和处理异常,提高程序的健壮性。 4. 内存管理:深入讲解堆和栈的区别,以及动态内存分配和释放。 5. 链表、队列、栈和...
这份资料由黑马程序员精心编纂,集合了多家知名公司的面试题目,涵盖了广泛且深入的Java知识点。 首先,基础篇中,你需要熟悉Java语言的基础语法,包括但不限于数据类型(基本类型与引用类型)、运算符、流程控制...
类是C++中面向对象编程的一个核心概念,它是一种用户自定义的数据类型,由成员变量(属性)和成员函数(方法)组成。通过类可以创建对象,每个对象都是该类的一个实例。类提供了封装、继承和多态性等特性,极大地...