java 泛型接口示例
/*
* 泛型接口
*/
interface Tool<t> {
public void show(T t); //泛型方法
public <e> void print(E e);
} /*
* 这种方式适合实现接口的时候就知道类里的泛型是什么
*/
class ToolImpl implements Tool<string> { @Override
public void show(String t) {
System.out.println("show:" + t);
} @Override
public <e> void print(E e) {
System.out.println("print:" + e);
} } /*
* 这种方式不好!
*/
class Tool2Impl implements Tool { @Override
public void show(Object t) {
System.out.println("show obj" + t);
} @Override
public void print(Object e) {
System.out.println("show obj" + e);
} } /*
* 这种方式适合使用的时候指定泛型
* 在继承接口的时候不用指定泛型
* 注意的是<t>也可以写成别的比如<c>
* 写成<e>的话,类上的<e>和print方法
* 上的<e>也不是一个类型
*/
class Tool3Impl<t> implements Tool<t> { @Override
public void show(T t) {
System.out.println("show=" + t);
} @Override
public <e> void print(E e) {
System.out.println("print=" + e);
} } /*
* 这个写法中show方法和print方法用的泛型也不是一个
* 类上的<e>和print方法上的<e>不是一个类型!!!
*/
class Tool4Impl<e> implements Tool<e> { @Override
public void show(E t) {
System.out.println("show-" + t);
} @Override
public <e> void print(E e) {
System.out.println("print-" + e);
} } /*
* 错误!
* class Tool5Impl<string> implements Tool<t> {
*
* }
*/
/*
* 正确,但是这个泛型上的String没意义,和Tool3Impl写法没区别
* class Tool5Impl<string, t=""> implements Tool<t> {
*
* }
*/
/*
* 错误1
* class Tool5Impl<string|t> implements Tool<e> {
*
* }
*/
/*
* 正确,但是这个泛型上的String|T没意义,和Tool4Impl写法没区别
* class Tool6Impl<string|t, e=""> implements Tool<e> {
*
* }
*/
public class GenericDemo { public static void main(String[] args) {
ToolImpl ti = new ToolImpl();
ti.show("nihao");
ti.print(6);
Tool3Impl<string> t3i = new Tool3Impl<string>();
t3i.show("haha");
t3i.print(6);
Tool4Impl<string> t4i = new Tool4Impl<string>();
t4i.show("hehe");
t4i.print(6);
} }
java 泛型接口示例的更多相关文章
- 正则表达式学习笔记(附:Java版示例代码)
具体学习推荐:正则表达式30分钟入门教程 . 除换行符以外的任意字符\w word,正常字符,可以当做变量名的,字母.数字.下划线.汉字\s space,空白符 ...
- Java发送邮件示例
利用Java发送邮件示例: 1.发送QQ邮件 import java.util.Properties; import javax.mail.Message; import javax.mail.Mes ...
- Java 泛型示例 - 泛型方法,类,接口
Java Genrics 是 Java 5 中引入的最重要的功能之一. 如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它. Java 中具有集合类的 ...
- HBase Java简单示例
Hbase采用Java实现,原生客户端也是Java实现,其他语言需要通过thritf接口服务间接访问Hbase的数据. Hbase作为大数据存储数据库,其写能力非常强,加上Hbase本身就脱胎于Had ...
- JAVA JPA - 示例用法
JPA(Java Persistence API)是JSR(Java Specification Requests)的一部分,定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate. ...
- HBase Java简单示例--转载
Hbase采用Java实现,原生客户端也是Java实现,其他语言需要通过thritf接口服务间接访问Hbase的数据. Hbase作为大数据存储数据库,其写能力非常强,加上Hbase本身就脱胎于Had ...
- JAVA泛型接口
事例代码: package com.xt.thins_15_3; import java.util.Iterator; /** * 泛型接口 * * @author xue * * @param &l ...
- 【转载】Java重构示例【1】
序言 本文通过Java示例代码片段展示了常用重构原则和技巧,供初级开发人员参考.精致的代码能够清楚传达作者的意图,精致的代码是最好的注释,精致的代码非常容易维护和扩展.程序员阅读精致的代码如同大众欣赏 ...
- Java 设计模式 -- 示例指南
设计模式在软件开发者中非常受欢迎的.每个设计模式都是对常见软件问题的通用的描述解决方案. 我们使用设计模式的好处有: 1.设计模式已经对于一个重复出现的问题进行了定义并且提供了工业标准的解决方案,因为 ...
随机推荐
- html中button自动提交表单?
在ie中,button默认的type是button,而其他浏览器和W3C标准中button默认的属性都是submit
- android ViewGroup事件分发机制
1:事件分销过程 自定义一个LinearLayout,重写dispatchTouchEvent onInterceptTouchEvent onTouchEvent,定义一个按键重写dispathcT ...
- 浅谈HTTP协议(上)
今天讨论一下HTTP协议.一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了. 首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和 ...
- window绝对路径与相对路径
绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\c ...
- Windows 10:解决开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的方法
开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用应该是不少网友都遇到过. 近日在使用Windows 10 Build 9926中,也出 ...
- hive踩过的小坑
上周使用hive做一些操作,几个小问题纠结很久.特此记录下: hive概念 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以 ...
- css 浮动
1. 浮动 浮动是css的布局功能,在CSS中,包括div在内的任何元素都可以浮动的方式显示.它能够改变页面中对象的前后流动顺序.浮动元素会脱离文档流,不占据空间.浮动元素可以左右移动,直到碰到包含它 ...
- sass学习笔记2
今天介绍sass在重用代码时最具威力的两个功能.一个是嵌套(Nesting),一个混合(Mixin). 我们在写CSS通过需要多个后代选择器组合到一起才能定位到目标元素上,而这定义过程,此元素的父元素 ...
- PHP EMS: 开源 在线考试系统安装
PHPEMS: 在线考试系统调测记录 下载安装软件包 PE2014.RAR 环境要求:利用了RHEL 5.X的一个环境,系统要求的运行环境是PHP 5.2以上,MYSQL 5.0以上.看了一下光盘,发 ...
- 例子:Alarm Clock with voice Commands Sample
通过本例子学习: 如何使用自定义字体文件(.TTF) 如何播放声音 动画的使用 Speech 设置闹铃 应用 设置 数据存储到IsolatedStorage 如何使用自定义字体文件(.TTF) < ...