泛型

1.认识泛型

  1. 泛型是在JKD1.5之后增加的新功能
  2. 泛型可以解决数据类型的安全性问题,它的主要原理,是在类声明的时候通过一个标识表示类中的某个属性的类型或者某个方法的返回值及参数类型
  3. 泛型不能用基本数据类型,要用其包装类
  4. 格式:
访问权限 class ClassName<泛型,泛型...>{
    属性
    方法
}
  1. 对象的创建
类名称<具体类型> 对象名称 = new 类名称<具体类型>();
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.构造方法使用泛型

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.指定多个泛型

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.通配符

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. 格式:
interface InterfaceName<T1,...>{
    
}
interface Inter<T>{
    public void say();
}
class A<T> implments Inter<T>{
    public void say(){
        
    }
}
class B implments Inter<String>{
    public void say(){
        
    }
}

6.泛型方法

访问权限 <泛型标识> 泛型标识 方法名称([泛型标识 参数名称])
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.泛型数组

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]);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 给定一个字符串数组,按照字典顺序进行从小到大的排序

     假设字符串数组是str[] = {"ab","cd","ef"},很明显答案就是”abcdef“最小,其实这是一道贪心问题,我的想法是将字符串数组进行内的字符...

    mathor
  • 最快最好用的文件搜索工具——Everything

    mathor
  • 事件模型

     事件模型如何理解呢,举个例子,你老婆出门了,让你在家看孩子,难道你每过一分钟就去看一次孩子吗,对于计算机来说,我做一个按钮,难道就一直监听这个按钮使用没有...

    mathor
  • 爬取新闻网信息

    学习了HttpClient和Jsoup,就掌握了如何抓取数据和如何解析数据。但是HttpClient对动态数据解析支持不是很友好,所以又学习了HtmlUtil,...

    Remember_Ray
  • 定义枚举的构造函数、方法和字段

    import org.junit.Test; public class lan { @Test public void tes...

    MonroeCode
  • 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?

    方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式

    用户5224393
  • :: 是什么语法?

    方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式

    全栈自学社区
  • 面试官写了个双冒号::问我这是什么语法?Java中有这玩意?

    方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式

    java进阶架构师
  • Java 开发技巧:减少魔法值的使用

    脑壳疼!从 Java 语法上无懈可击,但是从业务上却让人无法理解其中的含义。里面的 0 和 1 统称为魔法值 。

    码农小胖哥
  • apache的开源项目-模板引擎(Velocity)_学习了两天就上手啦_源码下载

    首先,如果你对Velocity不是很了解,还是建议你去apache的官方网站上去走走....

    Hongten

扫码关注云+社区

领取腾讯云代金券