泛型类定义的泛型,在整个类中有效。如果被方法是用,那么 
泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

为了让不同的方法可以操作不同类型,而且类型还不确定。那么 
可以将泛型定义在方法上。

泛型类

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——泛型类和泛型方法(静态方法泛型)的更多相关文章

  1. paip.自定义java 泛型类与泛型方法的实现总结

    paip.自定义java 泛型类与泛型方法的实现总结 ============泛型方法     public static <atiType,retType> retType reduce ...

  2. 转:C# 泛型编程之泛型类、泛型方法、泛型约束

    C# 泛型编程之泛型类.泛型方法.泛型约束 分类: asp.net c#2012-08-07 17:36 5998人阅读 评论(0) 收藏 举报 c#编程classobject编译器struct 泛型 ...

  3. C# 泛型编程之泛型类、泛型方法、泛型约束

    来自Hauk的文章 C# 泛型编程之泛型类.泛型方法.泛型约束 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为 ...

  4. C#中泛型类,泛型方法,泛型约束实际应用

    前言 所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型. 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用.在定义泛型类时,在对客户端代码能够在实例化类时 ...

  5. Java泛型类和泛型方法

    java编程思想说道: 泛型类是应用在整个类上,但同时可以在类中包含参数化方法,而这个方法所在的类可以是泛型,也可以不是泛型,也就是说是否有泛型方法,与其所在的类是否是泛型类没有关系. 泛型方法是的该 ...

  6. Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限

    泛型: 一种程序设计语言的新特性,于Java而言,在JDK 1.5开始引入.泛型就是在设计程序的时候定义一些可变部分,在具体使用的时候再给可变部分指定具体的类型.使用泛型比使用Object变量再进行强 ...

  7. Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类

    泛型:jdk1.5后的新特性,用于解决安全问题,是一个安全机制. 好处: 1.将运行时的异常出现问题classcastException.转移到了编译时期.方便程序员调试解决问题,让运行事情问题减少, ...

  8. JAVA之旅(二十一)——泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符

    JAVA之旅(二十一)--泛型的概述以及使用,泛型类,泛型方法,静态泛型方法,泛型接口,泛型限定,通配符 不知不觉JAVA之旅已经写到21篇了,不得不感叹当初自己坚持要重学一遍JAVA的信念,中途也算 ...

  9. Java泛型详解:<T>和Class<T>的使用。泛型类,泛型方法的详细使用实例

    一.引入 1.泛型是什么 首先告诉大家ArrayList就是泛型.那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码: [java] view plain copy ArrayList& ...

随机推荐

  1. 直方图与bin

    1.bin的含义 直方图中bin的含义:计算颜色直方图需要将颜色空间划分为若干小的颜色区间,即直方图的bin,通过计算颜色在每个小区间内德像素得到颜色直方图,bin越多,直方图对颜色的分辨率越强,但增 ...

  2. sugar crm

    百度百科:http://baike.baidu.com/link?url=7SnriwrF-4LcRfXctBbZjLc-UEUqWl3b0YR004pGFk4SJ1qMU9TMj37yFmHRsUS ...

  3. HttpContext.Current.Session 和 Session 的区别

    Session(会话)通常指一个动作从开始到结束不间断的一个动作. 例如“打电话”,通常是“1.拿起电话--2.拨对方号码--3.对方截图--4.挂机”.这四个步骤从完成到结束组成了一个基本的Sess ...

  4. C#如何使用SplitContainer控件实现上下分隔

    C#如何使用SplitContainer控件实现上下分隔 Orientation 属性设置为Horizontal 完美世界 http://www.23cat.com/Contents_51864.ht ...

  5. ExtJS梦想之旅(八)--GridPanel和EditorGridPanel的使用

    表格在web开发中会经常被使用到,是一种非常重要的组件,因此ExtJS在这方面做得也很出色,在这里也作为一个重点的组件来和大家分享,共同探讨一下. Ext.grid.GridPanel此类系基于Gri ...

  6. 在Linux中查看正在运行哪些process,杀掉一批名字相同的process

    列出全部进程: ps -A 杀掉所有名为netmist的进程 killall netmist 参考资料 ============ https://www.howtogeek.com/107217/ho ...

  7. 基于JT/T808协议的车辆监控平台架构方案

    技术支持QQ:78772895 1.接入网关应用采用mina/netty+spring架构,独立于其他应用,主要负责维护接入终端的tcp链接.上行以及下行消息的解码.编码.流量控制,黑白名单等安全控制 ...

  8. Spring Boot 直接用jar运行项目

    概述 在Spring Boot 开篇-创建和运行一文中,介绍了如何创建一个Sprint Boot项目并且运行起来.但是运行的方式是在IDEA中直接Run起来的.还有另一中方式可以可以把Spring B ...

  9. Annotation Type EnableTransactionManagement

    http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/transaction/annotation/Ena ...

  10. [Algorithm] Longest Substring Without Repeating Characters?

    Given a string, find the length of the longest substring without repeating characters. Example 1: In ...