为何找不到Java 7中的警告
作者:laozhang 发布时间:2022-09-08 23:04:18
Java 7的这个新特性改变了警告的对象。构建这些类型毕竟有破坏类型安全的风险,这总得有人知道。但 API 的用户对此是无能为力的,不管doSomething()是不是干了坏事,破坏了类型安全,都不在API用户的控制范围之内。
真正需要看到这个警告信息的是写doSomething()的人,即API的创建者,而不是使用者。所以Java 7把警告信息从使用API的地方挪到了定义API的地方。
过去是在编译使用API的代码时触发警告,而现在是在编译这种可能会破坏类型安全的API时触发。编译器会警告创建这种API的程序员,让他注意类型系统的安全。
为了减轻API开发人员的负担,Java 7还提供了一个新注解java.lang.SafeVarargs。把这个注解应用到API方法或构造方法之中,则会产生类型警告。通过用@SafeVarargs对这种方法进行注解,开发人员就不会在里面进行任何危险的操作,在这种情况下,编译器就不会再发出警告了。
类型系统的修改
虽然把警告信息从一个地方挪到另一个地方不是改变游戏规则的语言特性,但也证明了我们之前提到的观点——Coin项目曾奉劝诸位贡献者远离类型系统,因为把这么一个小变化讲清楚要大费周章。这个例子表明搞清楚类型系统不同特性之间如何交互是多么费心费力,而且对语言的修改被实现后又会怎么影响这种交互。这还不是特别复杂的修改,更大的变动所涉及的内容还会更多,其中还包括大量微妙的分支。
最后这个例子阐明了由小变化引发的错综复杂的影响。我们对Coin项目中改进的讨论也结束了。尽管它们几乎全都是语法上的小变化,但跟实现它们的代码量相比,它们所带来的正面影响还是很可观的。一旦开始使用,你就会发现这些特性对程序真的很有帮助!
小结
修改语言非常困难。而用类库实现新特性总是相对容易一些,当然并不是所有特性都能用类库实现。面对挑战时,语言设计师可能会做出一些比他们的预想更轻微、更保守的调整。
现在,我们该去看看构成发布版本更重要的东西了,先从Java 7中某些核心类库的变化开始。我们的下一站是I/O类库,那里可以说是发生了天翻地覆的变化。在此之前,希望你已经掌握了Java之前的版本处理I/O的方法,因为Java 7中的这些类(有时候被称为NIO.2)是构建在之前框架基础之上的。
如果你想看到更多关于TWR实战的例子,或者想要了解最新、高性能的I/O类,可以参考脚本之家其他相关文章。


猜你喜欢
- 关于用户token处理到的坑当采用前后台完全分离,以微服务架构的搭建时。在搭建微服务过程中,由于每个服务都是独立的应用,这样就会造成一个统一
- 公司的svn的地址改变了,怎么办呢。自己本地的正在修改的项目怎么办呢?修改一下svn的服务器地址咯。1.就是先关闭ide,重新打开,然后选择
- 申请百度地图密钥以及查看百度API网址:http://lbsyun.baidu.com/apiconsole/key#/home网址:htt
- 定时任务技术趋势简介:定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报
- 为了解放程序员的双手,减少重复性代码的编写,推荐使用插件:mybatis-plus-generator 进行代码自动生成。下面我将详细介绍通
- C# 3.0为你提供了对象集合初始化器:/// <summary>/// 图书类/// </summary>publ
- 目前很多网页都有滑动验证,目的就是防止不良爬虫扒他们网站的数据,我这次本着学习的目的使用Java和selenium学习解决滑动验证的问题,前
- 概述本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap、EnumMap、IdentityHashMap, 想必大
- 一、APP端调用1、注册广播监听查找结果//蓝牙发现设备和查找结束广播IntentFilter intentFilter = new Int
- privatestring[]GetMoc() { string[]str=newstring[3]; ManagementClassmcC
- 我这里主要是对串口类的简单使用,实现的功能是以读写方式打开串口,点击发送数据按钮将发送区的数据发送到缓冲区,然后在接收区显示出来,界面如下:
- 提到输入参数的基本验证(非空、长度、大小、格式…),在以前我们还是通过手写代码,各种if、else、StringUtils.isEmpty、
- 1 * * 是Spring中的概念,和过滤器类似,可以对用户请求进行拦截过滤处理。但是相对于过滤器而言, * 要的控制更加的细节, *
- FROM子句一、简单FROM子句获取数据源:var queryAllCustomers = &nb
- graylog配置springboot配置依赖compile group: 'de.siegmar', name: '
- 本文实例为大家分享了Unity实现物体左右移动效果的具体代码,供大家参考,具体内容如下效果如下代码:using UnityEngine;us
- 本文实例讲述了Java使用JDBC实现Oracle用户认证的方法。分享给大家供大家参考,具体如下:两天时间写的小品,以前的J2EE环境基本使
- 1.问题描述汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚
- 最近在研究android自定义控件属性,学到了TypedArray以及attrs。大家也可以结合《理解Android中的自定义属性》这篇文章
- 一.前言现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在