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
 */