一. 泛型

解决支持多类型参数的方案:

1, 重载: 在同一个类中,方法名相同,参数不同

不足之处: 代码过于重复

public class Tool{
   public String arrToStr(String[] arr, String symbol){
       String str = "";
       for(String v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   public String arrToStr(int[] arr, String symbol){
       String str = "";
       for(int v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   public String arrToStr(double[] arr, String symbol){
       String str = "";
       for(double v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

2, 使用Object

好处: 简单

不足: 什么都支持(类型无法得到限制)

public class Tool{
   public String arrToStr(Object[] arr, String symbol){
       String str = "";
       for(Object v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

3, 泛型: 广泛的类型(默认为任意类型)

但是泛型可以设置上限(以继承的方式实现)

3.1 定义方法泛型

public class Tool{
   //<X>: 程序员定义的一种数据类型即泛型,泛型名: X
   //X : 默认为Object
   public <X> String arrToStr(X[] arr, String symbol){
       String str = "";
       for(X v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
   
   //设置上限为Number
    public static <X extends Number> String arrToStr(X[] arr, String symbol){
       String str = "";
       for(X v: arr){
           str += symbol + v;
      }
       return str.substring(symbol.length());
  }
}

3.2 类泛型定义

public class Datas <X>{
   private X x;
   public Datas(X x){
       this.x = x;
  }
   public X getX(){
       return x;
  }
   public void setX(X x){
       this.x = x;
  }

   public static void main(String[] args) {
       Datas datas = new Datas(50);
       //不声明: X为Object
       Datas datas1 = new Datas("哈哈");
       Datas<Car> datas2 = new Datas<>(new Car("吉利",30));
       //声明 X为 Car类型
       Datas<Integer> datas3 = new Datas<>(50);
  }
}

Java泛型-类型参数化的更多相关文章

  1. java泛型-类型擦除

    详细内容:参考java编程思想P373,p650. Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就 ...

  2. java 泛型 类型作为参量 Class<T> transform

    Class<T> transform T:作为类型,用于定义变量: transform:作为具体类的类:用于创建实例. 类型信息是脱敏的具体类: 可以使用class的具体功能: 不能使用具 ...

  3. java泛型 8 泛型的内部原理:类型擦除以及类型擦除带来的问题

    参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...

  4. java 泛型的类型擦除与桥方法

    泛型类 --代码参考:java核心技术 卷1 第十版 public class Pair<T> { private T first; private T second; //构造器 pub ...

  5. java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  6. JAVA泛型中的有界类型(extends super)(转)

    JDK1.5中引入了泛型(Generic)机制.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Ja ...

  7. Java泛型总结---基本用法,类型限定,通配符,类型擦除

    一.基本概念和用法 在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化.例如在哈希表的存取中,JDK1.5之前使用HashMap的 ...

  8. 类型擦除真的能完全擦除一切信息吗?java 泛型揭秘

    背景 我们都知道泛型本质上是提供类型的"类型参数",它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism).其实 ...

  9. Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...

  10. java 泛型的内部原理:类型擦除以及类型擦除带来的问题

    一.Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首要前提是理解类型擦出(ty ...

随机推荐

  1. JVM划重点:引用类型、垃圾回收算法和内存划分

    一.Java四种引用类型    每种编程语言都有操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过"引用"(Reference).在 Java ...

  2. 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

    技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担. 软件工程师 Ward Cunningham首次将技术的复杂 ...

  3. 手把手教你实现PyTorch版ViT:图像分类任务中的Transformer实战

    作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 ViT论文Arxiv地址:An Image is Worth 16x16 Words: Transformers ...

  4. 在SpringCloud中的相关报错

    在SpringCloud中使用REST服务时 使用前需要先在配置类中注入RestTemplate的Bean 然后再使用 自动装配即可 @Autowired private RestTemplate r ...

  5. 用Java获取本机IP或者请求用户的真正IP地址

    一.在Web请求中获取请求用户的IP地址 public static String getUserRealIP(HttpServletRequest request) throws UnknownHo ...

  6. ArcObjects SDK 018 Geometry

    1.Geometry体系结构 如果要看完整的Geometry体系结构,那么可以去查看帮助中的类结构图,非常完整和严谨.可以通过下图方式打开. 点击打开后,会发现里面的结构非常复杂.但如果我们抽丝剥茧的 ...

  7. About me and the blog

    About me and the blog About me 坐标\(CQ\),可以叫我\(Luoyu\)/洛雨/呆猫(似乎混入了奇怪的东西,时常模仿呆猫说话故而得名)/猫老大(???不知道啥时候下一 ...

  8. 前端开发系列004-基础篇之JavaScript的字符串

    本文将重点介绍javaScript语言中字符串,操作字符串的常见方法以及具体的代码实现等. 一.字符串简单介绍 关于字符串(类型),其实在我的另一篇文章中 JavaScript语言基础已经有过下面这段 ...

  9. POLIR-Society--Networking- {关系、理论与管理}: 权利 - Giving(给于)+Taking(取得)+运用好+"人性"

    POLIR-Society--Networking- {关系.理论与管理}: 权利 - Giving(给于)+Taking(取得) 运用好"权利"+"人性" E ...

  10. "Management" by Stephen P. Robbins and Mary Coulter现代管理科学理论

    现代管理科学理论: Major Approaches to Management 3000 BC – 1776: Early Management 1911 – 1947 Late: Classica ...