java泛型之二——方法泛型

 
/***一、下面几个类和接口的关系是为了后面的Demo1类示例作准备  **/
interface inf1 {
}
interface inf2 {
}
class Animal {
}
class Person extends Animal {
}
class Girl extends Person {
}
class GoodGirl extends Girl {
}
class Man extends Person implements inf1, inf2 {
}

/**
 * 二、方法泛型的示例
 * E:任意类或接口
 */
public class Demo1<E> {
	 /** T:E类或E的子类,E接口或E接口实现类 */
	public <T extends E> T fun1(T t) {
		return t;
	}
	 /***  T: 任意类或接口 */
	public <T> T fun2(T t) {
		return t;
	}
	 /***T: Animal类(及其子类)并且必须是inf1接口(及其实现类)*/
	 /***K: inf2接口(及其实现类) */
	public <T extends Animal,inf1, K extends inf2> void show(T t, K k) {
		System.out.println(t+":"+k);
	}
	public String getMiddle(String[] a) {
		System.out.println("no");
		return "no";
	}
	 /***T:任意类或接口*/
	public <T> T getMiddle(T[] a) {
		System.out.println("yes");
		return a[a.length/2];
	}
	 /***调用函数时可以带泛型,也可以不带*/
	public static void main(String[] args) {
		 /***E:Person */
		Demo1<Person> d = new Demo1<Person>();
		 /***fun1中的T: Person或Person的子类,所以fun1中的参数必须是Person或Person的子类对象*/
		d.fun1(new GoodGirl());

		 /***调用fun1时使用了泛型Person(必须是E类或E类的的实现类,
                     而前面Demo1<Person>规定了E为Person,所以这里可以指定Person类) */
		d.<Person>fun1(new Girl());/**参数可以是Person及其子类对象*/
		
		 /***调用fun1时使用了泛型Girl(必须是E类或E类的的实现类,
                     而前面Demo1<Person>规定了E为Person,所以这里可以指定Girl类) */
		d.<Girl>fun1(new Girl());/**参数可以是Girl及其子类的对象*/
		
		String[] names = {"1","2","3"};
		 /***没有使用泛型调用,调用到public String getMiddle(String[] a)*/
		d.getMiddle(names);
		 /***使用了泛型调用,调用到public <T> T getMiddle(T[] a),*/
		d.<String>getMiddle(names);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值