cost 407 ms
Joshua Bloch 项目 #1 Static 工厂方法代替构造函数 - Object 创建 - Joshua Bloch Item #1 Static Factory Methods Instead of Constructors - Object creation

问题来源我想知道 Joshua Blochs“Effective Java”第 3 版第 1 项中描述的 Static 工厂方法的以下优点: static 工厂方法的第二个优点是,与构造函数不同,它们不需要在每次调用时都创建一个新的 object。 这允许不可变类(条目 15)使用预构造的实例,或 ...

在Java的私有方法中使用断言有什么好处 - What is the benefits to use assertion in Java's private methods

我正在阅读 Effective Java Item 49。我对使用断言来验证私有方法中的参数的示例有点困惑。 一些帖子解释了为什么我们可以私下使用断言,因为公共方法负责确保传递正确的 arguments。 因此,对私有方法使用断言没有风险。 但是为什么我们不在私有方法中使用Objects.requi ...

为什么 Java 终结器存在安全问题? - Why do Java finalizers have security problems?

我正在阅读Joshua Bloch 的 Effective Java 。 在第 8 项:避免第 2 章的定型剂和清洁剂中,他指出: 终结器有一个严重的安全问题:它们使你的 class 容易受到终结器攻击。终结器攻击背后的想法很简单:如果从构造函数或其序列化等价物readObject和readRes ...

什么是 Java 中的不可变值类? (Joshua Bloch 的有效 Java) - What is an immutable value class in Java? (Effective Java by Joshua Bloch)

我目前正在使用 Joshua Bloch 的Effective Java深入研究 Java(至少相对于我作为程序员的有限知识)。 在创建和销毁对象下的第 1 项中,他声明要考虑静态工厂方法而不是构造函数。 例如, 他在这个项目中的推理对我来说很清楚,除了他声明使用静态工厂方法“允许不可变值类” ...

Effective in Java Item 89: For instance control, prefer enum types to readResolve - 为什么窃取者可以更改原始实例的字段? - Effective in Java Item 89: For instance control, prefer enum types to readResolve - Why can the stealer change the field of the original instance?

可序列化的类定义为 窃取者类定义为 最后,这是程序。 这是程序的输出。 这是结构化的序列化形式。 当我阅读这部分时, 不知道为什么 ElvisStealer 的 readResolve() 方法的返回会改变 impersonator 的 favoriteSongs 字段? ...

为什么将指向不可变对象的 final 字段设置为非公开是一个好习惯? - Why is it a good practice to make a final field pointing to an immutable obj non public?

effective java 有一个关于访问控制的声明:即使一个字段是 final 并且引用一个不可变的 object,通过公开它你放弃了切换到一个新的内部数据表示的灵活性,其中该字段不存在。 我不明白这是什么意思。 感谢有人可以解释。 ...

Inheritance vs Composition:组合能有效解决依赖问题吗? [有效的Java] - Inheritance vs Composition: Does composition effectively solve dependency issues? [Effective Java]

我对 Java 有一定的了解,并且在 Effective Java(2017) 中遇到了一些对我来说意义不大的东西。 下面是书中的一段话。 (第18项) 与方法调用不同,inheritance 违反了封装。 换句话说,一个子类依赖于它的超类的实现细节来实现它的正确 function。超类的实现可 ...

关于“Effective Java Item#29 Favor Generic Types”中解决方案#1“堆污染”的问题 - Question about “heap pollution” at solution#1 in “Effective Java Item#29 Favor Generic Types”

我正在阅读 Effective Java Item#29 Favor Generic Types。 我对这个项目在谈到选择解决方案#1 或解决方案#2 的原因时提到的堆污染感到困惑。 这两种消除通用数组创建的技术都有其拥护者。 第一个更易读:数组被声明为 E[] 类型,清楚地表明它只包含 E ...

对于 public class 直接公开字段从来都不是一个好主意,但如果字段是不可变的,为什么危害较小呢? - It''s never a good idea for a public class to expose fields directly, but why it is less harmful if the fields are immutable?

我正在阅读 Effective Java 第 14 项中的一篇文章 - 在公共课程中,使用访问器方法,而不是公共字段。 在书中它说:虽然公共 class 直接公开字段绝不是一个好主意,但如果字段是不可变的,则危害较小。 我的问题是,如果字段是不可变的,为什么危害较小? 你能举一个现实生活中的例子来 ...

为什么 Joshua Bloch 在 Effective Java 中使用 2*size + 1 来调整堆栈大小? - Why did Joshua Bloch use 2*size + 1 for resizing the stack in Effective Java?

这是我正在谈论的代码: 为什么不简单地将最后一行保留为elements = Arrays.copyOf(elements, 2 * size); ? 它可能有效的唯一情况是 Stack 的初始大小为 0。但在这种情况下,它是一个常量 - DEFAULT_INITIAL_CAPACITY(非零 ...

涉及 generics 的类型安全异构容器 - Typesafe heterogeneous containers involving generics

我需要创建一个容器,为我提供一种存储通用类型元素的方法,有点像这种有效的 java 模式,但存储通用的东西是否可以创建一个涉及泛型类型事物的类型安全的异构容器? 我可以将Class<T>添加为方法参数。 例子: 有可能做到这一点吗? 如何,或者为什么不? 是 java 没有做的事情还是基 ...

返回空的不可变集合而不是分配一个新的空集合有什么弊端? - What are the drawbacks in returning empty immutable collection instead of allocating a new and empty one?

我曾经要求Collections.emptyList() , emptySet和emptyMap返回对不可变的空集合的引用,而不是从函数返回null 。 这是因为我认为没有理由分配新的空集合实例: 今天,我在有效Java第三版的第54条中阅读了以下内容: ...您可以通过重复 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM