zoukankan      html  css  js  c++  java
  • 泛型方法与类型推断

    一。好处

    1.代替整个类泛型化

    2.static方法无法访问泛型类的类型参数,所以static方法需要使用泛型能力,就必须使其成为泛型方法。

    二。示例

    只需将泛型参数列表置于返回值之前。

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

    结果:好像f()方法被无限重载过一样。

    java.lang.String 
    java.lang.Integer
    java.lang.Float
    GenericMethods

    三。泛型与反射

    public <T> T getInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException{
            return clazz.newInstance();
        }

    调用示例

    getInstance(Class.forName("com.gl.User"));

    forName

    public static Class<?> forName(String className)
                            throws ClassNotFoundException

    四。API示例

    java.util.Arrays
    
    public static <T> List<T> asList(T... a)

    1.用法 

    1 //  List<Shape> shapes = Arrays.asList(new Rect(),new Square());//编译期出错。 数组与泛型容器的区别:数组有协变类型,而泛型容器没有内建协变类型
    2     List<Rect> rects = Arrays.asList(new Rect(),new Square());
    3     List<Shape> rects1 = Arrays.<Shape>asList(new Rect(),new Square()); //显示类型参数说明
    4     
    5     List<Rect> rects2 = new ArrayList<Rect>();
    6     Collections.addAll(rects2, new Rect(),new Square());

    类继承

    class Shape{
        void draw(){
            System.out.println(this+".draw()");
        }
    }
    
    class Circle extends Shape{
        @Override
        public String toString() {
            return "Circle";
        }
    }
    class Rect extends Shape{
        @Override
        public String toString() {
            return "Rect";
        }
    }
    
    class Triangle extends Shape{
        @Override
        public String toString() {
            return "Triangle";
        }
    }
    
    class Square extends Rect{
        @Override
        public String toString() {
            return "Square";
        }
    }
  • 相关阅读:
    fenby C语言 P9
    fenby C语言 p7
    fenby C语言 P6
    fenby C语言
    让博客园博客自动生成章节目录索引
    python学习之路:生成器并行运算
    Python学习之路:生成器
    Python学习之路:装饰器实现终极版
    Python学习之路:装饰器实现2
    Python学习之路:装饰器实现
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3836623.html
Copyright © 2011-2022 走看看