前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

泛型

作者头像
mathor
发布2018-06-06 14:18:44
4660
发布2018-06-06 14:18:44
举报
文章被收录于专栏:mathormathor
1.认识泛型
  1. 泛型是在JKD1.5之后增加的新功能
  2. 泛型可以解决数据类型的安全性问题,它的主要原理,是在类声明的时候通过一个标识表示类中的某个属性的类型或者某个方法的返回值及参数类型
  3. 泛型不能用基本数据类型,要用其包装类
  4. 格式:
代码语言:javascript
复制
访问权限 class ClassName<泛型,泛型...>{
    属性
    方法
}
  1. 对象的创建
代码语言:javascript
复制
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
代码语言:javascript
复制
class A{
    private Object m;
    public void setM(Object m){
        this.m = m;
    }
    public Object getM(){
        return m;
    }
}
class B<T>{
    private T n;
    public void setN(T n){
        this.n = n;
    }
    public T getN(){
        return n;
    }
}
public static void main(String args[]){
    A a = new A();
    a.setM(15);//int类型
    int x = (Integer)a.getM();
    a.setM("test");//String类型
    String y = (String)a.getM();
    
    B<Float> b = new B<Float>();
    b.setN(3.14f);//Float类型
    float z = (Float)b.getN();
}
2.构造方法使用泛型
代码语言:javascript
复制
class A<T>{
    private T value;
    public A(T value){
        this.value = value;
    }
    public T getValue(){
        return value;
    }
}
public static void main(String args[]){
    A<String> a = new A<String>("构造方法使用泛型");
    System.out.println(a.getValue());
}
3.指定多个泛型
代码语言:javascript
复制
class A<T,K>{
    private T age;
    private K name;
    A(T age,K name){
        this.age = age;
        this.name = name;
    }
    public T getAge(){
        return age;
    }
    public K getName(){
        return name;
    }
}
public static void main(String args[]){
    A<Integer,String> a = new A<Integer,String>(18,"张三");
    System.out.println(a.getName() + a.getAge() + "岁");
}
4.通配符
代码语言:javascript
复制
class A<T>{
    private T value;
    A(T value){
        this.value = value;
    }
    public T getValue(){
        return value;
    }
    public String toString(){//重写toString方法
        return this.getValue().toString();
    }
}
public static void main(String args[]){
    A<String> a1 = new A("现在是String类型");
    tell(a1);//现在是String类型
    A<int> a1 = new A(18);
    tell(a1);//18
}
public static void tell(A<?> a){//?就是通配符,任意类型都可以匹配
    System.out.println(a)
}
5.泛型接口
  1. JDK1.5之后也可以声明泛型接口,和声明泛型类的语法类似,在接口名称后加上<T>
  2. 格式:
代码语言:javascript
复制
interface InterfaceName<T1,...>{
    
}
代码语言:javascript
复制
interface Inter<T>{
    public void say();
}
class A<T> implments Inter<T>{
    public void say(){
        
    }
}
class B implments Inter<String>{
    public void say(){
        
    }
}
6.泛型方法
代码语言:javascript
复制
访问权限 <泛型标识> 泛型标识 方法名称([泛型标识 参数名称])
代码语言:javascript
复制
class A{
    public <T> T tell(T t){
        return t;
    }
}
public static void main(String args[]){
    A a = new A();
    String str = a.tell("泛型方法");
    System.out.println(str);//泛型方法
}
7.泛型数组
代码语言:javascript
复制
public static void main(String args[]){
    String arr[] = {"www","wmathor","com"};
    tell(arr);
}
public static <T>void tell(T arr[]){
    for(int i = 0;i < arr.length;i++){
        System.out.println(arr[i]);
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.认识泛型
  • 2.构造方法使用泛型
  • 3.指定多个泛型
  • 4.通配符
  • 5.泛型接口
  • 6.泛型方法
  • 7.泛型数组
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档