泛型

1.泛型是主要目的就是指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。需要使用类型参数,用尖括号括住,放在类名后面。然后在使用参数的时候,再用实际的类型来替换此类型参数。基本类型是无法作为类型参数来使用的,java的类型参数必须是对象类型。

参考代码

public class test1<T> 
 {
private T a;
public test1(T a)
{
this.a=a;
}
public T f()
{
return a;
}
public static void main(String[] args) 
{
test1<String> base=new test1<String>("2");
System.out.print(base.f());
}
}

2.泛型方法

使用泛型类时,必须在创建对象的时候指出具体的类型,而使用泛型方法通常不必指明参数类型,因为编译器为我们找出具体的类型,这个称为参数推断。

要定义泛型方法,只需要将泛型参数列表置于返回值之前。

public class test1 
 {
public <T> void f(T x)
{
System.out.println(x.getClass().getName());
}
public static void main(String[] args) 
{
test1 tt=new test1();
tt.f("");
tt.f(1);
tt.f(1.0);

}
}

输出

java.lang.String
java.lang.Integer
java.lang.Double


3.擦除



class HasF {
public  void f()
{
System.out.print("sssssss");
}
}
class Manipulator<T extends HasF>{
private T obj;
public Manipulator(T x){
obj=x;
}
public void manipulate()
{
obj.f();
}

}
public class Mani{
public static void main(String [] args)
{
HasF hf=new HasF();
Manipulator<HasF> tt=new Manipulator<HasF>(hf);
tt.manipulate();

}

<T extends HasF>声明T必须具有类型HasF或者从HasF导出的类型,这样才可以安全在obj上调用发f()了,没有这个申明manipulator()不能在obj上调用f()这一需求映射到HasF拥有f()这个方法上面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值