Java泛型

Java 的泛型

参见:Java

Java 泛型的参数只可以代表类,不能代表个别对象。由于Java泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型,而且无法直接使用基本值类型作为泛型类型参数。Java编译程序在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。

由于运行时会消除泛型的对象实例类型信息等缺陷经常被人诟病,Java及JVM的开发方面也尝试解决这个问题,例如Java通过在生成字节码时添加类型推导辅助信息,从而可以通过反射接口获得部分泛型信息。通过改进泛型在JVM的实现,使其支持基本值类型泛型和直接获得泛型信息等。


定义一个泛型类:

public class Generic<K>{    //泛型
    K[] arr;//定义数组来模拟队列
    int maxSize;//定义数组最大容量
    int front;//定义队列头指针
    int rear;//定义队列尾指针

}


代码块:

package queue;泛型就是吧那个int换成K类型的

public class Generic<K>{//泛型
	K[] arr;//定义数组来模拟队列
	int maxSize;//定义数组最大容量
	int front;//定义队列头指针
	int rear;//定义队列尾指针
	
	//构造函数初始化
	public Generic(int maxSize) {
		
		this.maxSize = maxSize;
		arr=(K[]) new Object[this.maxSize];//强转
		front=-1;
		rear=-1;
		
	}
	//判断队列是否为空
	public boolean isEmpty() {
		return rear==front;
	}
	//判断队列是否满
	public boolean isFull() {
		return rear==maxSize-1;
	}
	//入队
	public void add(K value) {
		if(isFull()) {
			System.out.println("队列已满,不能添加");
			return;
		}
		rear++;
		arr[rear] = value;
	}
	//出队
	public K remove() {
		if(isEmpty()) {
			throw new RuntimeException("队列为空,不能取数据");
		}	
		front++;
		return arr[front];	
	}
	//显示队列
		public void list() {
			if(isEmpty()) {
				System.out.println("队列为空");
				return;
			}
			for(int i=front+1;i<=rear;i++) {
				System.out.println("Queue["+i+"]="+arr[i]);
			}
		}

}

测试运行

package queue;//测试使用泛型 就是所有的类型都可以用

public class TestGeneric {
	public static void main(String[] args) {
		System.out.println("使用泛型如下案例:");
		System.out.println("===使用队列管理整数类型的数据====");
		Generic generic=new Generic<Integer>(6);
		generic.add(6);
		generic.add(7);
		generic.list();
		
		System.out.println("===使用队列管理字符串类型的数据====");
		Generic generic1=new Generic<String>(6);
		generic.add("张三");
		generic.add("小白");
		generic.list();
		
	}

	
	
	
	

}

结果产出:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值