Contents
18.5. 自定义泛型接口¶
IQueue.java
package com.a51work.cn;
public interface IQueue<T> {
public void queue(T item);
public T dequeue();
}
ListQueue.java
package com.a51work.cn;
import java.util.ArrayList;
import java.util.List;
public class ListQueue<T> implements IQueue<T> {
// 声明保存队列元素集合items
private List<T> items;
public ListQueue() {
// TODO 自动生成的构造函数存根
this.items = new ArrayList<T>();
}
/**
* 入队方法
*
* @param item 参数需要入队的元素
*/
@Override
public void queue(T item) {
// TODO 自动生成的方法存根
this.items.add(item);
}
/**
* 出队方法
*
* @return 返回出队元素
*
*/
@Override
public T dequeue() {
// TODO 自动生成的方法存根
if (items.isEmpty()) {
return null;
} else {
return this.items.remove(0);
}
}
@Override
public String toString() {
// TODO 自动生成的方法存根
return items.toString();
}
public static <T> boolean isEquals(T a, T b) {
return a.equals(b);
}
public static void main(String[] args) {
System.out.println(isEquals(new Integer(1), new Integer(5)));
System.out.println(isEquals(1, 5)); // 发生了自动装箱
System.out.println(isEquals(new Double(1.0), new Double(1.0)));
System.out.println(isEquals(1.0, 1.0));// 发生了自动装箱
}
}
泛型方法
ListQueue.java
package com.a51work.cn;
import java.util.ArrayList;
import java.util.List;
public class ListQueue<T> implements IQueue<T> {
// 声明保存队列元素集合items
private List<T> items;
public ListQueue() {
// TODO 自动生成的构造函数存根
this.items = new ArrayList<T>();
}
/**
* 入队方法
*
* @param item 参数需要入队的元素
*/
@Override
public void queue(T item) {
// TODO 自动生成的方法存根
this.items.add(item);
}
/**
* 出队方法
*
* @return 返回出队元素
*
*/
@Override
public T dequeue() {
// TODO 自动生成的方法存根
if (items.isEmpty()) {
return null;
} else {
return this.items.remove(0);
}
}
@Override
public String toString() {
// TODO 自动生成的方法存根
return items.toString();
}
// public static <T> boolean isEquals(T a, T b) {
// return a.equals(b);
// }
// 限定类型参数为Number
public static <T extends Number> boolean isEquals(T a, T b) {
return a.equals(b);
}
public static void main(String[] args) {
System.out.println(isEquals(new Integer(1), new Integer(5)));
System.out.println(isEquals(1, 5)); // 发生了自动装箱
System.out.println(isEquals(new Double(1.0), new Double(1.0)));
System.out.println(isEquals(1.0, 1.0));// 发生了自动装箱
}
}
/*
false
false
true
true
*/