泛型运用

public class FGeneral<T>{
	private T con;
	
	public void setFG(T s){
		con = s;
	}
	
	public T getFG(){
		return con;
	}
	
	public <T1> void  showAny(T1 data){
		System.out.println(data);
	}
}

public class Generous <T extends Person>{
	private T obj;
	public void setObject(T obj){
		this.obj = obj;
	}
	public T getObj(){
		return obj;
	}
}

public interface Person {
	public void work();
}

public class TStudent implements Person{
	private String work;
	public void setWork(String s){
		work = s;
	}
	public String getWork() {
		return work;
	}
	public void work(){
		System.out.println("学生目前的工作是: "+work);
	}
}

import java.util.Random;

public class TTeacher implements Person{
	private String work;
	
	public TTeacher(){
		work = "给学生布置作业";
	}
	public void work(){
		System.out.println("老师的工作是: "+work);
	}
	public String getWork(){
		return work;
	}
	
	public void putWork(TStudent stu){
		Random random = new Random();
		String home;
		int homnum = random.nextInt(2);
		if(homnum == 0){
			home = "背22首古诗";
		}else{
			home = "抄33首古诗";
		}
		stu.setWork(home);
	}

}
public class MT {

	public static void main(String[] args) {
		TTeacher teacher = new TTeacher();
		TStudent student = new TStudent();
		Generous<Person> one = null;
		Generous<TTeacher> two = new Generous<TTeacher>(); 
		TTeacher te = new TTeacher();
		two.setObject(te);
		
		teacher.work();
		teacher.putWork(student);  
		student.work();
		
		FGeneral<String> s1 = new FGeneral<String>();   
		s1.setFG("lisa");
		System.out.println(s1.getFG());
		s1.showAny(22);   //括号中任意输入各种类型
		s1.showAny(student.getWork());
		
		FGeneral<FGeneral<TStudent>> three = new FGeneral<FGeneral<TStudent>>();
		FGeneral<TStudent> Ts = new FGeneral<TStudent>();
		Ts.setFG(student);
		three.setFG(Ts);
		System.out.println(three.getFG().getFG().getWork());
		
		FGeneral<?>  f = Ts;
		System.out.println(two.getObj().getWork());	
	}
}

例子2:

interface abc<T>{
	public void setData(T data);
	public T getData(int num);
	public int getSize();
}
public abstract class Animals {
	public abstract void setAnimal(String name);
	public abstract String getAnimal();
}
import java.util.Arrays;

class ArrayList<T> implements abc <T>{
	private Object [] data = null;
	int size = 0;
	
	public ArrayList(){     //初始化大小
		data = new Object[16];
	}
	public ArrayList(int num){
		data = new Object[num];
	}
	
	public void setData(T obj){  
		enSure(size+1);
		data[size++] = obj;
	}
	@SuppressWarnings("unchecked")
	public T getData(int num){	  //返回第num个数据
		return (T)data[num];
	}
	
	public int getSize(){
		return size;
	}
	private void enSure(int num){   //当超出容器大小时扩容
		if(num > data.length){
			int newLength = data.length + (data.length >> 1);
			data = Arrays.copyOf(data, newLength);			
		}
	}
}
public class Dog extends Animals{
	private String type;
	
	public void setAnimal(String s){
		type = s;
	}
	public String getAnimal() {
		return type;
	}
	public void showWork(){
		System.out.println("我是一条小狗");
	}
}

import java.util.Random;

public class MArr {

	public static void main(String[] args) {
		ArrayList<Dog>data = new ArrayList<Dog>(8);
		Random random = new Random();
		for(int i =0; i < 10; i++){
			int num = random.nextInt(18);
			String name = "dog_" + num;
			
			Dog dog = new Dog();
			dog.setAnimal(name);
			data.setData(dog);
		}
		for(int j =0; j <data.getSize(); j++){
			System.out.println("第"+j+"只狗的名字叫:"+data.getData(j).getAnimal());
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值