美文网首页
java-浅入浅出泛型

java-浅入浅出泛型

作者: snoweek | 来源:发表于2016-02-11 15:42 被阅读185次

写一个输出数组的方法。但是数组的类型有很多,如int ,double,float,字符串等等。为了输出不同类型的数组,我们需要些很多种方法,但其实这些方法除了数组类型不同,其余都是相同的,这是方法重载。

public class InputArrayTest {
    public static void printArray(int[] inputArray){
        for (int array:inputArray){
            System.out.print(array+" ");
        }
        System.out.println();           
    }
    public static void printArray(double[] inputArray){
        for (double array:inputArray){
            System.out.print(array+" ");
        }
        System.out.println();           
    }
    public static void printArray(String[] inputArray){
        for (String array:inputArray){
            System.out.print(array+" ");
        }
        System.out.println();           
    }
    public static void main(String[] args) {
        
        int a[]={1,2,3};
        double b[]={1.1,2.2,3.3};
        String c[]={"a","b","c"};
        printArray(a);
        printArray(b);
        printArray(c);      
    }
}

显然,方法重载就是一种浪费。那么我们是不是可以只写一个方法,却可以让他处理不同类型的数组呢。这就是泛型的作用。

public class InputArrayTestTwo {
    public static <E> void printArray( E[] inputArray )
       {          
             for ( E element : inputArray ){        
                System.out.print(element+" " );
             }
             System.out.println();
        }

    public static void main(String[] args) {
        Integer[] intArray={1,2,3};
               Double[] doubleArray={1.1,2.2,3.3};
               String[] stringArray={"a","b","c"};
                printArray(intArray);
        printArray(doubleArray);
        printArray(stringArray);
    }
}

也许,有的时候,即使我们希望一个方法可以处理多种类型参数,但同时也希望有个限制,因此就有了有界的类型参数。例如我们只希望数组输出的对象是数字,字符串不允许输出。
可能有时候,你会想限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。
要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。

public class InputArrayTest{
    public static <E extends Number> void printArray( E[] inputArray )
       {          
             for ( E element : inputArray ){        
                System.out.print(element+" " );
             }
             System.out.println();
        }

    public static void main(String[] args) {
        Integer[] intArray={1,2,3};
       Double[] doubleArray={1.1,2.2,3.3};
    
       printArray(intArray);
        printArray(doubleArray);

    }

}

以上均是泛型方法。
下面是泛型类

public class Box <T>{
    private T t;
     
      public void add(T t) {
        this.t = t;
      }  
      public T get() {
        return t;
      } 
      public static void main(String[] args) {
         Box<Integer> integerBox = new Box<Integer>();
         Box<String> stringBox = new Box<String>();
       
         integerBox.add(new Integer(10));
         stringBox.add(new String("Hello World"));
     
         System.out.printf("Integer Value :%d\n\n", integerBox.get());
         System.out.printf("String Value :%s\n", stringBox.get());
      }
}

相关文章

  • java-浅入浅出泛型

    写一个输出数组的方法。但是数组的类型有很多,如int ,double,float,字符串等等。为了输出不同类型的数...

  • JAVA-泛型

    JAVA-泛型 sschrodinger 2018/11/15 简介 泛型是Java SE 1.5的新特性,泛型的...

  • 深入浅出、深入深出、浅入浅出、浅入深出

    伊川思源实验学校 张文明 在网上读到这样一段话:世界上有四种老师,第一种是讲课能深入浅出,很深...

  • keystone浅入浅出

    在OpenStack的框架体系中Keystone的作用类似于一个服务总线,为OpenStack提供身份管理服务(I...

  • 《浅入浅出》-RocketMQ

    你知道的越多,你不知道的越多 点赞再看,养成习惯 本文GitHub https://github.com/Java...

  • 浅入浅出zookeeper

    zookeeper是我们日常开发中每天都能接触到的组件,但是好像很多人对其缺乏了解,所以心血来潮写了这篇文章。首先...

  • JVM浅入浅出

    说是浅入浅出,其实还是需要在入和出的过程中,进行一个深入的了解。在了解JVM之前,我其实是从比较常见的JVM面...

  • 世上有四种老师――顾明远

    1、深入浅出――轻负高效 2、深入深出――重负高效 3、浅入浅出――轻负低效 4、浅入深出――重负低效

  • 深入浅出Java泛型

    1.概述 在 Java5 以前,普通的类和方法只能使用特定的类型:基本数据类型或类类型,如果编写的代码需要应用于多...

  • 深入浅出Java泛型

    一 概述 泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数...

网友评论

      本文标题:java-浅入浅出泛型

      本文链接:https://www.haomeiwen.com/subject/cihukttx.html