You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
早在 Java9 版本时,Java 的设计者们就对 `@Deprecated` 注解进行了一次升级,增加了 `since` 和 `forRemova`l 等 2 个新元素。其中,since 元素用于指定标记了 `@Deprecated` 注解的 API 被弃用时的版本,而 `forRemoval` 则进一步明确了 API 标记 @Deprecated 注解时的语义,如果`forRemoval=true`时,则表示该 API 在未来版本中肯定会被删除,开发人员应该使用新的 API 进行替代,不再容易产生歧义(Java9 之前,标记 @Deprecated 注解的 API,语义上存在多种可能性,比如:存在使用风险、可能在未来存在兼容性错误、可能在未来版本中被删除,以及应该使用更好的替代方案等)。
40
+
早在 Java9 版本时,Java 的设计者们就对 `@Deprecated` 注解进行了一次升级,增加了 `since` 和 `forRemoval` 等 2 个新元素。其中,since 元素用于指定标记了 `@Deprecated` 注解的 API 被弃用时的版本,而 `forRemoval` 则进一步明确了 API 标记 @Deprecated 注解时的语义,如果`forRemoval=true`时,则表示该 API 在未来版本中肯定会被删除,开发人员应该使用新的 API 进行替代,不再容易产生歧义(Java9 之前,标记 @Deprecated 注解的 API,语义上存在多种可能性,比如:存在使用风险、可能在未来存在兼容性错误、可能在未来版本中被删除,以及应该使用更好的替代方案等)。
41
41
42
42
仔细观察原始类型的包装类(比如:`java.lang.Integer`、`java.lang.Double`),不难发现,其构造函数上都已经标记有`@Deprecated(since="9", forRemoval = true)`注解,这就意味着其构造函数在将来会被删除,不应该在程序中继续使用诸如`new Integer();`这样的编码方式(建议使用`Integer a = 10;`或者`Integer.valueOf()`函数),如果继续使用,编译期将会产生'Integer(int)' is deprecated and marked for removal 告警。并且,值得注意的是,这些包装类型已经被指定为同 `java.util.Optional` 和 `java.time.LocalDateTime` 一样的值类型。
0 commit comments