首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

泛型(泛型擦除)【java基础—-泛型】

1.3 泛型定义(泛型类、泛型方法(泛型方法返回值是泛型的,泛型方法在普通类和泛型类里)): 1.4特点: 对于泛型特点(1)举个例子 : 没有使用泛型时的异常抛出 对于泛型特点(2)访问时不需要类型转换...不能存储基本类型int,double… 5.泛型擦除 5.1 泛型擦除概念: 5.2 由于泛型擦除出现的错误举例: ---- ---- 1.什么是泛型 1.1泛型概念: Java泛型是J2 SE1.5...1.3 泛型定义(泛型类、泛型方法(泛型方法返回值是泛型的,泛型方法在普通类和泛型类里)): 10、泛型的定义是(带尖角号的T), 例如定义一个泛型类:public class Stu{ }...(){return null} 注意,(在泛型类里 的返回值是泛型的方法)在定义了泛型类之后,在该类里想要返回值类型是一个泛型的方法(), 不用再定义该方法是泛型啦,直接可以使用泛型的T: public...(也可以加上泛型特点(1)(2)) 3.2泛型类的好处 答:使用泛型类可以解决重复业务的代码的复用问题,也就是业务颗粒的复用,同时使用泛型类型在编译阶段就可以确定,并发现错误,类型的转换都是自动和隐式的

2.6K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java泛型之泛型边界

    参考链接: Java中具有泛型的有界类型 在网上发现这篇文章写得不错,地址:http://build.cthuwork.com:8081/wordpress/category/java教程/java再谈泛型...其泛型边界决定了输入(input)和输出(output)分别能接受什么类型。   输入为其函数的参数、属性能够赋值的值的类型,输出为函数的返回值、获取到的属性的值的类型。   ...Java数组能够协变是一个设计上的根本错误,它能导致你的代码在你完全不知情的情况下崩溃和异常,但现在改已经为时已晚。...可能是java某个老版本运行的结果。   我们可不想让(1)E(2)V(4)I(5)L(0)充满我们的代码。所以,泛型吸取了这个教训,本身就是为了提高类型安全性而设计的泛型不能犯这样的低级错误。...在虚拟机看来,List这个泛型类型只是普通的类型List而已,这种行为叫泛型擦除(Type Erasure)。   那么在Java中泛型是如何如何实现其目的的呢?Java的泛型充分利用了多态性。

    2.1K10

    Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符

    泛型 什么是泛型: 泛型就相当于标签 形式: jdk1.5之后,用泛型来解决元素类型不确定的数据保存操作, 例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型...泛型对应的类型都是引用类型不能是基本类型 泛型类和泛型接口 声明泛型类时传入类型实参 创建泛型类对象时,传入类型实参 类型实参为空时,默认为Object类型 继承泛型类: 1.泛型父类不传入类型实参...,默认为Object类型 2.泛型父类传入类型实参,子类既可以是泛型类,也可以不是 3.泛型父类传入类型实参,则子类必须是泛型类,且子类的类型形参列表必须包含父类的类型形参列表 泛型类的定义和实例化...泛型类的构造器写法: 不同泛型的引用类型不可以互相赋值 泛型如果不指定,就会被擦除,例子就是 泛型类中的静态方法不能使用类的泛型 不能直接使用泛型数组的创建,如果非要创建 泛型方法 什么是泛型方法...,不是带泛型的方法就是泛型方法,泛型方法有要求:这个方法的泛型参数类型要和当前类的泛型方法的泛型无关 换个角度:泛型方法对应的那个泛型参数类型和当前所在的这个类,是否为泛型类,泛型是啥,无关 泛型方法定义的时候

    3.5K10

    Java 泛型

    Java 泛型技术产生的原因: package cn.mldn.utli; class Point { private Object x ; private Object y ;...,使用的时候动态的设置Point接收的类型为String类型,所以返回的也是String类型就不用在转型了 String x = p.getX(); String y =...如果是采用泛型,那么它能够接受的数据类型只能是基本数据类型的包装类表示,不可以引用类型! # 在使用泛型类或者接口的时候,没有设置泛型的具体类型,会报错。...(如果在没有设置泛型的具体类型的时候,所有泛型使用Object描述泛型的数据类型) # 在JDK1.7后可以简化泛型:可以将实例化的泛型具体类型的定义省略 —————————— 泛型通配符: package...; } } ------------------------------- 泛型方法:   泛型方法不一定定义在支持泛型的类中。

    1K10

    Java泛型

    目录 概述 使用 泛型类&泛型接口 定义泛型 使用泛型 泛型的确定 泛型方法 定义泛型 使用泛型 泛型的确定 泛型上限&泛型下限 泛型限定的概念 泛型上限 泛型下限 注意事项 概述 ​ 泛型可以把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型...注意:泛型只能是引用数据类型。 使用 泛型类&泛型接口 ​ 泛型类和泛型接口的用都相同,本篇以泛型类为例进行讲解。 ​ 泛型类就是把泛型定义在类上,用户使用该类的时候,才把类型明确下来 。...定义泛型 ​ 在类名后加,在中定义泛型,中的内容相当于泛型的名字,可以随便写。在泛型类中我们可以把这个泛型的名字当做一个数据类型来使用。...定义泛型 ​ 在方法返回值类型的前面加,在中定义泛型,中的内容相当于泛型的名字,可以随便写。...并且我们一般是在参数列表中或者是返回值类型上使用到这个泛型。

    81910

    【Java】泛型

    泛型的使用减少了程序中的强制类型转换和运行时错误的可能性。 因为在一般的类和方法,只能使用具体的类型: 要么是基本类型 要么是自定义的类。...下面修改Interimpl.java文件,使用泛型类实现泛型接口,修改后的代码如下所示。...泛型方法 7.1 概述 泛型方法是将类型形参的声明放在修饰符和返回值类型之间的方法。...在Java程序中, 定义泛型方法常用的格式如下: [访问权限修饰符] [static] [final] 返回值类型 方法名 (形参列表) { ... } 定义泛型方法时候,需要注意以下...Java语言的编程原则是尽量设计泛型方法解决问题,如果设计泛型方法可以取代整个类的泛型化,就应该优先采用泛型方法。

    9810

    java泛型

    这样当程序员不小心将不同类型的数据丢进同一个集合中时就会出现错误。 从Java5以后,Java引入了“参数化类型”的概念,允许程序在创建集合时指定集合的类型,这就是我们今天要讲的泛型。...深入泛型: 所谓泛型,就是允许在定义类、接口、方法时使用类型形参,这个类型形参(或叫泛型)将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可称为类型实参)。...Java5改写了集合框架中的全部接口和类,为这些接口、类增加了泛型支持,从而可以在声明集合变量、创建集合对象时传入类型实参,这就是在前面程序中看到的 List和 ArrayList泛型接口、类: //定义泛型接口,一个形参 public interface List{} //定义泛型接口,两个形参 public interface Map{} //定义泛型类...泛型方法: 泛型方法的定义: ? 泛型方法的调用: ?

    93320

    Java 泛型

    例如类的声明一般用E,泛型方法一般用T。 1)泛型类、泛型接口 2)泛型方法: 传入的参数 | 参数返回值,是泛型 泛型与子类型 规则要自洽,提出反例打破漏洞。...泛型方法允许使用类型参数来表示方法和/或其返回类型的一个或多个参数的类型之间的依赖关系。 如果不存在这种依赖关系,则不应使用泛型方法。 泛型方法和通配符,可以同时使用的。...泛型的一个主要目标就是提高Java程序的类型安全,使用泛型可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。...如果不用泛型,则必须使用强制类型转换,而强制类型转换不安全,在运行期可能发生ClassCast Exception异常,如果使用泛型,则会在编译期就能发现该错误。 第三是消除强制类型转换。...支持泛型的Java编译器(例如JDK1.5中的Javac)可以用来编译经过泛型扩充的Java程序(Generics Java程序),但是现有的没有使用泛型扩充的Java程序仍然可以用这些编译器来编译。

    2.3K51

    Java泛型

    泛型技术对于Java开发来说十分重要,它可以帮助我们编写出型质和安全的代码。但和C++不同,Java采用了类型擦除机制实现泛型,这给开发带来一定困惑。...本文将带你深入解读Java泛型与类型擦除,揭开这背后的奥妙之处。...Java泛型定义在Java中,泛型是通过在类、接口或方法前添加类型参数来实现的,比如:public class Box { // T stands for "Type" private T t...类型擦除机制然而,与C++不同的是,Java在编译期会将类型参数替换为最接近的非泛型类型,叫做类型擦除。...类型擦除的优点加载时间与内存占用更低泛型类能向后兼容非泛型环境泛型方法能重载非泛型方法泛型类保持与原有类的二进制兼容性通过类型擦除,Java中泛型的设计既保证了向下兼容,又在编译期实现了类型检查,在安全与效率上取得很好的平衡

    16410

    【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )

    ; java 泛型 与 C++ 模板 : Java 中的泛型 , 是仿照 C++ 中的 模板 开发的 , 目的是让开发者可以写出 通用 , 灵活 的代码 ; 伪泛型 : Java 中的泛型 , 是 伪泛型..., Java 泛型开发好之后 , 在 编译阶段 就 将泛型相关的信息消除 了 , 不会泛型留到运行时 ; 泛型类型 : 泛型方法 : 方法有参数 , 方法的参数 可以指定成一些 泛型 ; 泛型类 :...泛型的作用 : 安全检查 : 在 编译阶段 , 就可以进行 代码检查 , 将更少的错误带到运行时 ; 避免强转 : 避免 类型的强转 导致不必要的安全问题 ; 提高性能 : 使用泛型可以 提高 Java...---- 静态方法泛型 : 如果静态方法中 使用了 类中的泛型 T , 作为参数 或 返回值 , 这种使用时错误的 ; 如果必须在 静态方法 中使用泛型 T , 则该泛型 T 必须是静态方法的泛型 ,...不能是类的泛型 ; 错误用法 : 正确用法 : 五、泛型类与泛型方法完整示例 ---- /** * 泛型类 * 该 T 类型作为参数使用 * T 是参数化类型 , 可以由外部传入

    15.4K30

    Java泛型

    表示不确定的java类型 T (type) 表示具体的一个java类型 K V (key value) 分别代表java键值中的Key Value E (element) 代表Element 如果泛型类在...方法的返回值都会变成明确的类型 接口 实现类的实现规则跟派生子类的规则一致。...泛型方法 定义格式 修饰符 返回值类型 方法名(形参){} 修饰符与返回值中间的非常重要,可以理解为声明该方法为泛型方法 只有声明了的方法才是泛型方法,泛型类中使用了泛型的成员方法不是泛型方法...相当于声明,该方法中要使用泛型T 实例: 传入一个T类型的集合,随机返回一个T public T test(List list){ return list.get(random.nextInt...泛型和数组 可以声明带泛型的数组引用,但不能直接创建带泛型的数组对象 可以通过java.lang.reflect.Array的newInstance(Class, int)创建T[]数组

    49730

    Java泛型

    1.java泛型及就是在jdk1.5之后出现的一个新的安全机制 我们发现在集合框架中我们可以放入任何的元素,然而这样做并没有任何意义,绝大多时候我们是默认我们 知道这个容器需要存放什么样的内容,...但是如果有了泛型我们就可以直接定义泛型类或者泛型方法。...1).泛型类就是把泛型定义在类上面这样的话类中只要引用了泛型的地方他们的类型都一致例如集合框架,写在类名后类似于接受参数 泛型的确定就是在类实例化的时候 2).当然有时候类中的函数想操作的独享并不是类上定义的那个类型我们可以把泛型定义在函数上...,写在返回值的前面 类似于参数一样,但是静态方法是无法使用定义在类上面的泛型因为类的泛型在确定类型的时候都是在类的实例化 而函数的泛型则是自动识别无需程序员做任何操作 3)....接口也可以定义泛型,然后类在实例化的时候可以明确泛型也可以不指定泛型然后还是一个泛型类 三个知识点的代码分别如下: /** * Author: lwen * Date: 2017/07/12

    1.5K40

    Java 泛型

    什么是泛型 泛型实质上就是使用程序员定义安全的数据类型。在没有出现泛型之前,Java也提供了对Object的引用“任意化”操作,这种“任意化”操作就是对Object引用进行向下转型及向上转型操作。...但是某些强制类型转换的错误也许不会被编译器捕捉,而在运行后出现异常,可见强制类型换换存在安全隐患,所以在此提供了泛型机制。...: java.lang.Float cannot be cast to java.lang.Integer 而泛型机制有效的解决了这一问题。...,同时返回和接受的参数使用T这个类型,最后在主方法中可以使用Over形式返回一个Bollean型对象,使用OverClass形式返回一个Float型对象,使这两个对象分别调用...使用泛型限制后,泛型类型必须实现或继承了anyClass这个接口或类。无论anyClass是接口还是类,在进行泛型限制时都必须使用extends关键字。

    1.1K20

    Java 泛型

    这第二种解决办法,也就是我们这篇文章讲的 泛型 2、什么是泛型? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。...结论:Java 泛型只在编译阶段有效,即在编译过程中,程序会正确的检验泛型结果。...Tom T的实际类型为:java.lang.String 3.4 泛型通配符 在泛型中,我们可以用 ?...> list = new ArrayList(); list.add("aa"); //错误,无法设置 4.3、泛型方法的定义与其所在的类是否是泛型类是没有任何关系的,所在的类可以是泛型类,...也可以不是泛型类   4.4、泛型类没有继承关系,即String 为 Object 类型的子类,则 List 是 List 的子类这句话是错误的 原因:假设上面那句话是正确的

    1.6K100

    Java泛型

    Java泛型概念Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。...Java泛型的核心思想是类型参数化,即在类、接口或方法的定义中使用类型参数来代替具体的类型,这些类型参数在实例化时被具体类型替换,从而实现了通用性和类型安全。...类型擦除:Java泛型在编译时实现类型安全检查,但在运行时会将泛型类型的信息擦除,转换为原始类型。这是为了保持与Java早期版本的兼容性,同时减少运行时的开销。...Java泛型的优点可以提高代码的可读性和可重用性,同时保证类型安全。它可以在编译时检查类型错误,避免了运行时出现类型转换异常等问题。...但是,由于Java泛型的类型擦除机制,会导致一些限制,如无法使用基本类型作为类型参数、无法获取泛型类型的具体类型等。因此,在使用Java泛型时需要注意一些细节和限制。

    18021

    Java泛型

    先科普一下知识,什么是泛型?聊啥概念,直接上代码,直奔主题,先从 JDK 1.8 摘点源码出来,一起与泛型打个照面,混个脸熟。 1. 啥是 E?...问号,看到这个估计会一脸懵逼,其实就是未知,代表一万种可能性,在 Java 中就是万用字符。 ? 那我们再看看上面摘自 JDK 1.8 Collections 的源码,那么 Comparable 则代表 Comparable 的类型参数必须是 T 或 T 的父型,你可能有迷糊了,还是再抛点代码吧。 ?...其实泛型是编译期的一种检查,能够有效防止狗入人海,其中主要分为使用泛型的类以及使用泛型的方法;其中 E 主要用于集合的元素,除了 E 之外绝大部分是 T,然后 Java 还引入了一种万用字符是问号,不过可以用任意...Java 有效标识符进行表示,不要再纠结、不要再纠结、不要再纠结。

    85420
    领券