泛型

匿名 (未验证) 提交于 2019-12-03 00:18:01

方法定义:

public <T> T creatNew(T bean) {     return apiServer; }  public <T> T creatNew1(Class<T> bean) throws IllegalAccessException, InstantiationException {     return apiServer.newInstance(); }  public <T> T creatNew2(Class<?> bean) throws IllegalAccessException, InstantiationException {     return (T) apiServer.newInstance(); }  public Object creatNew3(Class<?> apiServer) throws IllegalAccessException, InstantiationException {         return apiServer.newInstance();     }

调用方式:

            int aNew = creatNew(10);      try {             String bNew = creatNew1("".getClass());              boolean cNew = creatNew2("".getClass());             int dNew = creatNew2("".getClass());         } catch (IllegalAccessException e) {             e.printStackTrace();         } catch (InstantiationException e) {             e.printStackTrace();         }
  • creatNew和creatNew1比较

    相同点:两个方法的返回值类型与传入参数类型已知
    不同点:参数类型不同,一个是具体类型,一个是Class类

  • creatNew1和creatNew2比较
    相同点:方法参数类型一致都是Class类型
    不同点:creatNew2返回值类型与参数类型可以不一样
  • creatNew2和creatNew3比较
    这两个方法是等价的
  1. 单独的T代表一个类型而Class< T >和Class< ? >代表这个类型所对应的Class类
  2. Class< T >在实例化的时候,T要替换成具体类
  3. Class< ? >它是个通配泛型,?可以代表任何类型

PS:T是代表任意一种类型,这是泛型里的问题,是一种形式,表示你用的是泛型编程,不受类型的约束

文章来源: 泛型
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!