Java 7中为何无法定位到特定警告信息?

2026-06-09 07:142阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计849个文字,预计阅读时间需要4分钟。

Java 7中为何无法定位到特定警告信息?

Java 7 引入的新特性改变了警告的对象。构建这些类型时,可能存在破坏类型安全的风险。这已是众所周知。然而,API 的用户对此无能为力,无论 doSomething() 是否会引发错误,都无法避免类型安全问题。

Java 7的这个新特性改变了警告的对象。构建这些类型毕竟有破坏类型安全的风险,这总得有人知道。但 API 的用户对此是无能为力的,不管doSomething()是不是干了坏事,破坏了类型安全,都不在API用户的控制范围之内。

真正需要看到这个警告信息的是写doSomething()的人,即API的创建者,而不是使用者。所以Java 7把警告信息从使用API的地方挪到了定义API的地方。

过去是在编译使用API的代码时触发警告,而现在是在编译这种可能会破坏类型安全的API时触发。编译器会警告创建这种API的程序员,让他注意类型系统的安全。

为了减轻API开发人员的负担,Java 7还提供了一个新注解java.lang.SafeVarargs。把这个注解应用到API方法或构造方法之中,则会产生类型警告。通过用@SafeVarargs对这种方法进行注解,开发人员就不会在里面进行任何危险的操作,在这种情况下,编译器就不会再发出警告了。

类型系统的修改

虽然把警告信息从一个地方挪到另一个地方不是改变游戏规则的语言特性,但也证明了我们之前提到的观点——Coin项目曾奉劝诸位贡献者远离类型系统,因为把这么一个小变化讲清楚要大费周章。这个例子表明搞清楚类型系统不同特性之间如何交互是多么费心费力,而且对语言的修改被实现后又会怎么影响这种交互。这还不是特别复杂的修改,更大的变动所涉及的内容还会更多,其中还包括大量微妙的分支。

阅读全文
标签:这个

本文共计849个文字,预计阅读时间需要4分钟。

Java 7中为何无法定位到特定警告信息?

Java 7 引入的新特性改变了警告的对象。构建这些类型时,可能存在破坏类型安全的风险。这已是众所周知。然而,API 的用户对此无能为力,无论 doSomething() 是否会引发错误,都无法避免类型安全问题。

Java 7的这个新特性改变了警告的对象。构建这些类型毕竟有破坏类型安全的风险,这总得有人知道。但 API 的用户对此是无能为力的,不管doSomething()是不是干了坏事,破坏了类型安全,都不在API用户的控制范围之内。

真正需要看到这个警告信息的是写doSomething()的人,即API的创建者,而不是使用者。所以Java 7把警告信息从使用API的地方挪到了定义API的地方。

过去是在编译使用API的代码时触发警告,而现在是在编译这种可能会破坏类型安全的API时触发。编译器会警告创建这种API的程序员,让他注意类型系统的安全。

为了减轻API开发人员的负担,Java 7还提供了一个新注解java.lang.SafeVarargs。把这个注解应用到API方法或构造方法之中,则会产生类型警告。通过用@SafeVarargs对这种方法进行注解,开发人员就不会在里面进行任何危险的操作,在这种情况下,编译器就不会再发出警告了。

类型系统的修改

虽然把警告信息从一个地方挪到另一个地方不是改变游戏规则的语言特性,但也证明了我们之前提到的观点——Coin项目曾奉劝诸位贡献者远离类型系统,因为把这么一个小变化讲清楚要大费周章。这个例子表明搞清楚类型系统不同特性之间如何交互是多么费心费力,而且对语言的修改被实现后又会怎么影响这种交互。这还不是特别复杂的修改,更大的变动所涉及的内容还会更多,其中还包括大量微妙的分支。

阅读全文
标签:这个