zoukankan      html  css  js  c++  java
  • 泛型入门

    java集合有个缺点——将一个对象放进集合之后,该对象的编译类型就会变成Object类型(其运行时类型不变)编译时不检查对象的类型。

    泛型概念:java的参数化类型,即在创建集合时指定集合元素的类型。

    如,List<String> strList=new ArrayList<String>();  后面的String可省略不写

    strList.add(5);   会引起编译错误,因为已经指定strList 集合存放的数据类型为String类型了,不能存放其他类型的对象。输出时不用强制类型转换。

    泛型实质:允许在定义接口、类和方法时使用类型形参,类型形参将在声明变量、创建对象和调用方法时动态的指定。

     1 public class Apple<T> {
     2     private T info;
     3     public Apple(){    
     4     }    // 构造器名依然为Apple,而不是Apple<T>
     5     public  Apple(T info){
     6         this.info=info;    
     7     }
     8 
     9     public static void main(String[] args) {
    10         Apple<String> a1=new Apple<>("苹果");
    11         System.out.println(a1.info);
    12         Apple<Double> a2=new Apple<>(23.56);
    13         System.out.println(a2.info);
    14     }
    15 
    16 }

    从泛型类派生子类

     可以从带泛型声明的接口、类中创建其实现类或继承类,此时使用这些接口或类时不能包含类型形参

    public class A extends Apple<T>{}    此处为错误写法

    public class A extends Apple<String>{}  此处为正确写法   

    public class A extends Apple    使用类或接口时也可以不形参传入实参

    调用方法是必须为所有的数据形参出入参数值。

    不能在静态方法、静态变量和静态代码块的声明和初始化中使用类型参数。

    public class B<T> {
        static T t1;
        public static void study(T t1){    
        }
    }
  • 相关阅读:
    The password has to have a minimum of 6 characters, including at least 1 small letter, 1 uppercase letter and 1 number
    Angular i18n的技术分享、踩过的坑
    转: .Net 4.0 ExpandoObject 使用
    min_square
    KALMAN PYTHON
    双系统安装 win + ubuntu
    docker
    drl
    shell
    导航定位方案
  • 原文地址:https://www.cnblogs.com/peng111/p/5648436.html
Copyright © 2011-2022 走看看