问题来源我想知道 Joshua Blochs“Effective Java”第 3 版第 1 项中描述的 Static 工厂方法的以下优点: static 工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时都创建一个新的 object。 这允许不可变类(条目 15)使用预构造的实例,或 ...
问题来源我想知道 Joshua Blochs“Effective Java”第 3 版第 1 项中描述的 Static 工厂方法的以下优点: static 工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时都创建一个新的 object。 这允许不可变类(条目 15)使用预构造的实例,或 ...
我正在阅读 Effective Java Item 49。我对使用断言来验证私有方法中的参数的示例有点困惑。 一些帖子解释了为什么我们可以私下使用断言,因为公共方法负责确保传递正确的 arguments。 因此,对私有方法使用断言没有风险。 但是为什么我们不在私有方法中使用Objects.requi ...
我正在阅读Joshua Bloch 的 Effective Java 。 在第 8 项:避免第 2 章的定型剂和清洁剂中,他指出: 终结器有一个严重的安全问题:它们使你的 class 容易受到终结器攻击。终结器攻击背后的想法很简单:如果从构造函数或其序列化等价物readObject和readRes ...
我目前正在使用 Joshua Bloch 的Effective Java深入研究 Java(至少相对于我作为程序员的有限知识)。 在创建和销毁对象下的第 1 项中,他声明要考虑静态工厂方法而不是构造函数。 例如, 他在这个项目中的推理对我来说很清楚,除了他声明使用静态工厂方法“允许不可变值类” ...
可序列化的类定义为 窃取者类定义为 最后,这是程序。 这是程序的输出。 这是结构化的序列化形式。 当我阅读这部分时, 不知道为什么 ElvisStealer 的 readResolve() 方法的返回会改变 impersonator 的 favoriteSongs 字段? ...
effective java 有一个关于访问控制的声明:即使一个字段是 final 并且引用一个不可变的 object,通过公开它你放弃了切换到一个新的内部数据表示的灵活性,其中该字段不存在。 我不明白这是什么意思。 感谢有人可以解释。 ...
我对 Java 有一定的了解,并且在 Effective Java(2017) 中遇到了一些对我来说意义不大的东西。 下面是书中的一段话。 (第18项) 与方法调用不同,inheritance 违反了封装。 换句话说,一个子类依赖于它的超类的实现细节来实现它的正确 function。超类的实现可 ...
我正在阅读 Effective Java Item#29 Favor Generic Types。 我对这个项目在谈到选择解决方案#1 或解决方案#2 的原因时提到的堆污染感到困惑。 这两种消除通用数组创建的技术都有其拥护者。 第一个更易读:数组被声明为 E[] 类型,清楚地表明它只包含 E ...
我一直在阅读 Joshua Bloch 的Effective Java书。 In item #5, he seems to say not to use a singleton or static utility class to implement a class that depends o ...
我正在阅读 Effective Java 第 14 项中的一篇文章 - 在公共课程中,使用访问器方法,而不是公共字段。 在书中它说:虽然公共 class 直接公开字段绝不是一个好主意,但如果字段是不可变的,则危害较小。 我的问题是,如果字段是不可变的,为什么危害较小? 你能举一个现实生活中的例子来 ...
这是我正在谈论的代码: 为什么不简单地将最后一行保留为elements = Arrays.copyOf(elements, 2 * size); ? 它可能有效的唯一情况是 Stack 的初始大小为 0。但在这种情况下,它是一个常量 - DEFAULT_INITIAL_CAPACITY(非零 ...
我尝试使用 Glacier Class Immutable Checker 在 Checker Framework 3.6.0 上不起作用。 我用 Maven 获得了 Glacier 0.1。 ( http://mcoblenz.github.io/Glacier/ ) 然后,我尝试检查示例源 ...
我不明白什么时候使用 try-catch,它们有什么问题,特别是这个项目(57 java-effective)有人可以解释一下吗 "Because exceptions are designed for exceptional circumstances, there is little inc ...
行Integer i = chooser.randomObj(); 抱怨 Integer 需要强制转换,因为返回类型是 Object。 这让我很困惑,因为我的理解是 generics 在编译时具有类型信息,我们已经知道 randomObj 返回类型是 T 类型,在这种情况下恰好是 Integer。 ...
背景在 Effective Java 第 44 条中,作者建议使用标准功能接口(而不是定义自定义接口)。 关于java.util.function package,作者: 列出了六个基本 forms: UnaryOperator<T> , BinaryOperator<T> ...
我正在阅读 Effective Java 第 3 版,我正在阅读第 10 项:覆盖时遵循 Equals 合同。 那里有一个我试图在我的机器上模拟的例子。 下面是相同的代码。 正如您从 AtomicPoint class 中的评论中看到的那样,我的包含检查是错误的,而 Joshua Bloch 表示 ...
在干净的代码书中,有一点说“公共 API 中的 Javadocs”。 和有效的java书一样,有这个项目: “第 56 项:为所有暴露的 API 元素编写文档注释”。 所以这是我的问题“所有公共方法都被视为公共 API 吗?” ...
我需要创建一个容器,为我提供一种存储通用类型元素的方法,有点像这种有效的 java 模式,但存储通用的东西是否可以创建一个涉及泛型类型事物的类型安全的异构容器? 我可以将Class<T>添加为方法参数。 例子: 有可能做到这一点吗? 如何,或者为什么不? 是 java 没有做的事情还是基 ...
我正在阅读 Effective Java 这本书,Joshua Bloch 在第 2 章中说: static 工厂方法的第三个优点是,与构造函数不同,它们可以返回其返回类型的任何子类型的 object。 我不明白如何在实践中使用这个概念? 有人可以给我一个例子吗? ...
我曾经要求Collections.emptyList() , emptySet和emptyMap返回对不可变的空集合的引用,而不是从函数返回null 。 这是因为我认为没有理由分配新的空集合实例: 今天,我在有效Java第三版的第54条中阅读了以下内容: ...您可以通过重复 ...