当前位置: 首页 > news >正文

沈阳集团网站建设王烨江婉柔

沈阳集团网站建设,王烨江婉柔,做网站需要掌握的技术,专业律所网站建设在定义类、接口和方法时#xff0c;泛型使类型(类和接口)成为参数。与方法声明中使用的形参非常相似#xff0c;类型参数为您提供了一种方法#xff0c;可以用不同的输入重用相同的代码。不同之处在于形式参数的输入是值#xff0c;而类型参数的输入是类型。 使用泛型有许…在定义类、接口和方法时泛型使类型(类和接口)成为参数。与方法声明中使用的形参非常相似类型参数为您提供了一种方法可以用不同的输入重用相同的代码。不同之处在于形式参数的输入是值而类型参数的输入是类型。 使用泛型有许多好处 1、在编译时加强类型检测 通过使用泛型可以在编译时捕获和修复类型错误从而避免在运行时出现 ClassCastException 等类型转换异常。这提高了代码的可靠性和稳定性。 2、消除类型转换 使用泛型可以避免一些操作的强制类型转换 3、提高代码重用性 泛型可以使代码更加通用可以编写一次代码来处理多种类型的数据。 4、提高性能 泛型是在编译时进行类型检查的因此可以避免在运行时进行类型转换从而提高了程序的性能。 泛型定义 泛型可以定义在类接口和方法上。泛型使用 来指定泛型类型。 public class AminalT {private T flag;public T getFlag() {return flag;}public Aminal(T x){this.flag x;}public static void main(String[] args) {AminalString a1 new Aminal(a);AminalInteger a2 new Aminal(2);System.out.println(a1.getFlag());System.out.println(a2.getFlag());} }如上类变量flag在class定义时候指定为泛型在对应使用泛型变量flag的地方都需要使用泛型进行接收和传递。 常见的泛型类型标识 E - Element表示元素常见于JDK的集合框架中 K - Key键 V - Value值 N - Number数字 T - Type 类型 S, U, V等 - 第2个、第3个、第4个类型 上面这些泛型类型标识只是一种约定不会强制进行校验你也完全可以自定义如下 public class FruitXXX {private XXX price;XXX getPrice(){return price;}void setPrice(XXX price){this.price price;}public static void main(String[] args) {FruitDouble f1 new Fruit();f1.setPrice(2.1d);FruitInteger f2 new Fruit();f2.setPrice(5);} }上面使用XXX来表示类型一样可以正常编译使用。 多个泛型 定义泛型时可以指定多个泛型类型多个之间使用隔开 public class PairK,V {K key;V value;public Pair(K k,V v){this.key k;this.value v;}public static void main(String[] args) {PairInteger,String pair new Pair(666,泛型);System.out.println(pair.value);} }泛型方法 泛型方法相比于普通方法的声明还会在返回值前使用 来声明使用的泛型参数列表 public static T ListT fromArrayToList(T[] a) {return Arrays.stream(a).collect(Collectors.toList()); }这里需要主要一点类上的泛型在类方法上都可以直接使用注意是非静态方法不用在方法上声明。 泛型类型限定 可以限定泛型为某个类的子类或实现了某个接口使用extends来指定父类。 public static T extends Number float plus(T a ,T b){ return a.floatValue() a.floatValue(); }如果要限定多个条件可以使用 来连接。 T extends Number Comparable通配符限定 在泛型代码中问号?被称为通配符用来表示未知类型。通配符可以在多种情况下使用作为参数、字段或局部变量的类型有时作为返回类型尽管最好的编程实践是更加具体。通配符永远不会被用作泛型方法调用的类型参数泛型类的实例创建或者超类型。 通配符限定只能使用在引用类型上是是对泛型的限定。可以限定泛型的上界和下界。 ? extends Foo ? super Foo 上界? extends Foo表示泛型最高类型是Foo只能是Foo及其子类。 下界? super Foo表示泛型最低类型是Foo只能是Foo及其父类。 无界? 表示没有类型限制 例如 public void printFruits(List? extends Fruit fruits) {for (Fruit fruit : fruits) {System.out.println(fruit);} }这里入参约束成Fruit的上界也就是入参只能是实现了Fruit接口的类这样在方法体中就可以调用Fruit接口统一的方法来完成逻辑操作。这里一定要理解 extends和 T extends的区别。extends是针对引用类型也就是实际参数而T extends是方法或类的定义上。 类型擦除Type Erasure Java 中的泛型在编译时会进行类型擦除Type Erasure。类型擦除是 Java 泛型实现的一种机制它允许你在编译时使用泛型类型(也就是在编码是进行检测)但在运行时使用的是原始类型。在编译时泛型类型参数被擦除并替换为其边界或 Object 类型。 验证泛型擦除可以使用反射来操作class。 如下定义类 public class ErasureTestT,X extends Number {T t;X x;public void setT(T t){this.t t;} }通过反射打印类信息 Class c ErasureTest.class; for (Field field : c.getDeclaredFields()) {System.out.println(field.getName():field.getType()); } for (Method method : c.getDeclaredMethods()) {System.out.println(method.getName():);Class[] params method.getParameterTypes();for (int i 0; i params.length; i) {System.out.println(参数params[i].getName(),类型params[i].getTypeName()); } /** 输出内容 t:class java.lang.Object x:class java.lang.Number setT: 参数java.lang.Object,类型java.lang.Object */这里可以看到X extends Number转换成了其上界NumberT转换成了其原始类型Object。 擦除带来的问题 由于擦除通过反射在对方法进行调用时可以跳过类型约束 ListString list new ArrayList(); list.add(haha); Method addMethod list.getClass().getDeclaredMethod(add, Object.class); addMethod.invoke(list,Integer.valueOf(1)); System.out.println(list);如上代码定义了一个String型的list但是我们通过反射成功的往list添加了一个Integer类型的上面的代码可以正常执行。这就可以绕过泛型限定。
http://www.pierceye.com/news/227643/

相关文章:

  • 物流网站源代码安平县网站建设
  • 自助服务器网站建设修改wordpress的库名
  • 惠州做网站乐云seo网站建设如何插音乐
  • 自媒体图片素材网站东莞网站建设推广技巧
  • 新浪网站是什么程序做的六安网站关键词排名优化地址
  • 手机网站大全123456镇江手机网站建设
  • 企业网站模板下载哪家公司强服装设计就业前景如何
  • 婚纱网站源代码网站制作专业的公司
  • 公司经营范围 网站开发网络工程好就业吗
  • 企业网站建设与管理试题wordpress设置页面访问权限
  • 中国顺德手机网站设计安居客做网站
  • 网站运营的含义百度地图轨迹导航
  • 网站开发时创业中文网站模板
  • 男人最爱的做网站网站建设合作合同范文
  • 我和你99谁做的网站做润滑油网站图片
  • 基于wordpress门户网站wordpress可以自己写代码吗
  • 自己做发卡网站wordpress搬家出问题
  • 网站建设数据库搭建秦皇岛市属于哪个省
  • 网站建设怎样找客户辽宁网站定制企业
  • 建设工程项目管理网站上海it公司
  • 网站运营需要 做哪些工作做网站需要了解的知识
  • 旅游去过的地方可做标识网站百度一下网页入口
  • 做ps找图的网站有哪些法与家国建设征文网站
  • 途途外贸企业网站管理系统aspnet网站模板
  • 网站建设企业网站常用参数
  • 深圳市建设工程质量检测网站网站建设公司 待遇
  • 站长工具大全php做在线直播网站
  • 品牌建设网站公司排名3d模型代做网站
  • 保定网站建设模板联系方式网站设计时图片怎么做
  • 网站策划书内容鄂尔多斯网站制作 建设