- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在一个私有(private)的内部类中有一个私有(private)方法,我想使用 SafeVarargs 注释。但是,我需要有一个静态或 final方法。为什么私有(private)方法也需要是最终的?这不是多余的吗?
最佳答案
这是多余的,你提出了一个很好的观点。
我认为要求 final 或 static 的真正原因是强制该方法不能被覆盖,因此子类不能以使 @SafeVarargs 注释在定义上无用的方式篡改数据方法。
但是,虽然它是多余的,但这并不是一个糟糕的决定——很多时候,程序员会尽可能地将每个方法设为私有(private),然后根据需要慢慢打开类。如果此方法在私有(private)范围内被标记为 final,那么如果必须打开该方法,它仍然可以使用 @SafeVarargs 注释,只需更改访问级别。如果 final 被故意删除,你会得到编译时错误,但如果你已经拥有它,那么删除私有(private)访问的人(可能不是你自己,在基于团队的环境中)不会对为什么感到困惑删除“private”修饰符突然使代码不再编译。
关于java @SafeVarargs 为什么私有(private)方法需要是最终的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728971/
我有一些 Java 代码(使用 Guava ImmutableList 类): @Nonnull public static UserHistory forUser(long id, E... ev
这个问题不是关于堆污染如何发生的。这个问题不是关于注释@SafeVarargs有什么作用。据我所知,它用于抑制本地和调用站点的警告。我读了documentation 。我的问题是:为什么要将此注释添加
代码如下: class Foo { private final T[] array; @SafeVarargs Foo(T... items) { this.array = ite
下面我的查询方法有助于使用org.hibernate.Session查询我的持久层。方法代码如下: public class Persister{ public static List qu
在这段代码中, package com.example; interface CollectorIF { // @SafeVarargs // Error: @SafeVara
我在一个私有(private)的内部类中有一个私有(private)方法,我想使用 SafeVarargs 注释。但是,我需要有一个静态或 final方法。为什么私有(private)方法也需要是最终
我的 API 中有一个带有通用可变参数的方法。我希望我的 API 与 Java 6 源代码和二进制兼容,但如果 Java 7 API 使用者不会遭受不必要的 “varargs” 警告,那就太好了。 我
为什么注解@SafeVarargs不能应用于非final实例方法? 最佳答案 如果您声明@SafeVarargs,那么您必须确定它实际上是安全的。如果一个方法是非最终的,它可以在子类中被覆盖。该覆盖可
我已经尝试让 Android 数据绑定(bind)工作 2 天了,它是一个接一个的编译器问题,现在我完全碰壁了。我用谷歌搜索了这个,没有找到任何东西。 这是完整的日志: java.lang.Runti
我是一名优秀的程序员,十分优秀!