JAVA——泛型类和泛型方法(静态方法泛型)
泛型类定义的泛型,在整个类中有效。如果被方法是用,那么
泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。
为了让不同的方法可以操作不同类型,而且类型还不确定。那么
可以将泛型定义在方法上。
泛型类
class Demo<T>
{
public void show(T t)
{
System.out.println("show: "+t);
}
public void print(T t)
{
System.out.println("show: "+t);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demo<Integer>d = new Demo<Integer>();
d.show(new Integer(4));
Demo<String>d1 = new Demo<String>();
d1.print("haha");
}
}
结果:
show: 4
show: haha
泛型方法
class Demo
{
public <T> void show(T t)
{
System.out.println("show: "+t);
}
public <Q> void print(Q q)
{
System.out.println("print:"+q);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demo d = new Demo();
d.show("hello boy!");
d.print("Alex i love you !");
}
}
结果:
show: hello boy!
print:Alex i love you !
同时定义泛型类和泛型方法
class Demo<T>
{
public void show(T t)
{
System.out.println("show: "+t);
}
public <Q> void print(Q q)
{
System.out.println("print:"+q);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demo <String> d = new Demo<String>();
d.show("hello boy!");
d.print("Alex i love you !");
d.print(5);
d.print("heiei");
}
}
结果:
show: hello boy!
print:Alex i love you !
print:5
print:heiei
特殊之处:
静态方法不可以访问类上定义的泛型
如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
class Demo<T>
{
public void show(T t)
{
System.out.println("show: "+t);
}
public <Q> void print(Q q)
{
System.out.println("print:"+q);
}
public static <W>void method(W t)
{
System.out.println("method: "+t);
}
}
class GenericDemo4
{
public static void main(String[] args)
{
Demo <String> d = new Demo<String>();
d.show("hello boy!");
d.print("Alex i love you !");
d.print(5);
d.print("heiei");
Demo.method("hihi");
}
}
结果:
show: hello boy!
print:Alex i love you !
print:5
print:heiei
method: hihi
泛型定义在接口上
interface Inter<T>
{
void show(T t);
}
//第一种
class InterImpl implements Inter<String>
{
public void show(String t)
{
System.out.println("show :"+t);
}
}
/*第二种
class InterImpl<T>implements Inter<T>
{
public void show(T t)
{
System.out.println("show :"+t);
}
}
*/
class GenericDemo5
{
public static void main(String[] args)
{
/*
InterImpl<Integer> i = new InterImpl<Integer>();
i.show(4);
*/
InterImpl i = new InterImpl();
i.show("haha");
}
}
结果:
show :haha
第一种相对来说就比较死,固定为String类型了。而第二种可以自己定义。
JAVA——泛型类和泛型方法(静态方法泛型)的更多相关文章
- paip.自定义java 泛型类与泛型方法的实现总结
paip.自定义java 泛型类与泛型方法的实现总结 ============泛型方法 public static <atiType,retType> retType reduce ...
- 转:C# 泛型编程之泛型类、泛型方法、泛型约束
C# 泛型编程之泛型类.泛型方法.泛型约束 分类: asp.net c#2012-08-07 17:36 5998人阅读 评论(0) 收藏 举报 c#编程classobject编译器struct 泛型 ...
- C# 泛型编程之泛型类、泛型方法、泛型约束
来自Hauk的文章 C# 泛型编程之泛型类.泛型方法.泛型约束 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为 ...
- C#中泛型类,泛型方法,泛型约束实际应用
前言 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用.在定义泛型类时,在对客户端代码能够在实例化类时 ...
- Java泛型类和泛型方法
java编程思想说道: 泛型类是应用在整个类上,但同时可以在类中包含参数化方法,而这个方法所在的类可以是泛型,也可以不是泛型,也就是说是否有泛型方法,与其所在的类是否是泛型类没有关系. 泛型方法是的该 ...
- Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限
泛型: 一种程序设计语言的新特性,于Java而言,在JDK 1.5开始引入.泛型就是在设计程序的时候定义一些可变部分,在具体使用的时候再给可变部分指定具体的类型.使用泛型比使用Object变量再进行强 ...
- Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类
泛型:jdk1.5后的新特性,用于解决安全问题,是一个安全机制. 好处: 1.将运行时的异常出现问题classcastException.转移到了编译时期.方便程序员调试解决问题,让运行事情问题减少, ...
- JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符
JAVA之旅(二十一)--泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符 不知不觉JAVA之旅已经写到21篇了,不得不感叹当初自己坚持要重学一遍JAVA的信念,中途也算 ...
- Java泛型详解:<T>和Class<T>的使用。泛型类,泛型方法的详细使用实例
一.引入 1.泛型是什么 首先告诉大家ArrayList就是泛型.那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码: [java] view plain copy ArrayList& ...
随机推荐
- Java命令学习系列(四)——jstat
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具.他可以显示本地或远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据, ...
- 不知不觉vs2012 update 4出来了
今天早上起来原来看新闻说VISUAL STUIDO 2013 正式发布的日期是11月13日,今天打开微软VS2013下载页面,发现没有任何迹象,在浏览里面的新闻的时候发现了VS2012 UPDATA ...
- Error: MDM failed command. Status: Only a single SDC may be mapped to this volume at a time
映射一个volume到多个SDC的时候报错如下: Error: MDM failed command. Status: Only a single SDC may be mapped to this ...
- C#窗体读取EXCEL存入SQL数据库
windows窗体上放了一个Textbox1,2个按钮button1和button2~按button1选择excel文件~按button2进行相关处理 Code Snippet private vo ...
- js遍历jstl数组
查询到在js中可以使用jstl <script> <c:forEach items="${channel.templates}" var="templa ...
- Java方法containsAll学习
有时候我们需要判断B链表是不是A链表的子集,我们可以使用A.containsAll(B)来判断,当返回值是true的时候就表明B链表是A链表的子集,当返回值是false时候就表明B链表不是A链表的子集 ...
- MFC剪贴板通信
1.建立一个基于对话框的应用程序,界面如下: 2.对两个按钮进行消息响应: void CChipBoardOperateDlg::OnBnClickedBtnCopycb() { // TODO: 在 ...
- 定时删除日志文件---linux定时清理日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- Linux系统中关于Sqlite3中文乱码问题及解决办法
新做的一个项目在本地(Win8)测试时没有问题,但传到服务器(Linux)时从Sqlite3数据库查询到的数据中文却是乱码(数据库中是正常的) 将php文件.html文件都设置成统一的utf8还是一样 ...
- Eclipse 文件太长,导致着色异常问题
1. 把C/C++ ->Editor->Scalability, 对应红框中的数字调大.