Tag: 构造函数

Java – 私有和包私有枚举构造函数之间的区别

最近我经常使用Enumerations。 所以我想知道…… 私有Enum构造函数和枚举构造函数与任何可见性修饰符(package-private)之间是否有任何区别?

定义初始化与构造函数初始化

在Java中,但在其他OO语言中,在其定义中初始化属性之间存在差异,如 class Example { public Sample sample_attribute = new Sample(); } 并使用构造函数初始化它? class Example { public Sample sample_attribute; public Example() { sample_attribute = new Sample(); } } 我想不出任何实际的区别,有吗? 否则,是否存在一种方法比另一种方法更好的情况,即使它们具有相同的结果?

构造函数在抽象类中有什么用?

既然我们无法实例化抽象类,那么在抽象类中使用构造函数的必要性是什么?

为什么我不应该在我的类的构造函数中使用Thread.start()?

我一直在寻找理由,为什么你不应该在类的构造函数中调用线程的start方法。 请考虑以下代码: class SomeClass { public ImportantData data = null; public Thread t = null; public SomeClass(ImportantData d) { t = new MyOperationThread(); // t.start(); // Footnote 1 data = d; t.start(); // Footnote 2 } } ImportantData是一些通用的东西(可能很重要),而MyOperationThread是一个知道如何处理SomeClass实例的线程的子类。 Footnodes: 我完全理解为什么这是不安全的。 如果MyOperationThread在以下语句完成之前尝试访问SomeClass.data(并且数据已初始化),那么我将得到一个我没有准备好的exception。 或许我不会。 你不能总是告诉线程。 在任何情况下,我都会为以后的奇怪,意外行为做好准备。 我不明白为什么这样做是禁止的领土。 此时,所有SomeClass的成员都已初始化,没有其他成员函数更改状态已被调用,因此构造有效地完成。 根据我的理解,这样做被认为是不好的做法的原因是你可以“泄漏对尚未完全构建的对象的引用”。 但是对象已经完全构造,构造函数除了返回之外没有什么可做的。 我已经搜索了其他问题,寻找这个问题的更具体的答案,并且也查看了引用的材料,但没有发现任何说“你不应该因为这样和那种不良行为”,只有“说”你不应该。“ 如何在构造函数中启动一个线程在概念上与这种情况不同: class SomeClass { public ImportantData […]

使用values()创建枚举常量的最终Java类数组

在Java枚举类中,我想创建一个包含类的values()的final static数组。 当我沿着以下行执行此操作时,结果数组为null 。 public enum Name { E1( stuff ), E2( stuff ); private static final Name[] values = Name.values(); private Name( stuff ) { more stuff; } } 我也试过通过调用显式类setter方法来做到这一点,但这给出了java.lang.ExceptionInInitializerErrorexception。 我理解这个问题是由一些浅的依赖引起的,因为前面代码中的stuff使用其他类,它们本身依赖于枚举类。 是否有经过测试和validation的技术来实现我的需求?

关于Java中构造函数的问题

关于Java构造函数我几乎没有问题 构造函数可以是私有的吗? 如果是,那么在哪种情况下? 构造函数是否是方法? 如果构造函数没有返回任何内容,那么为什么每次调用它时我们都会得到一个新的Object? 如果我们不指定,那么构造函数的默认访问修饰符是什么。 编辑 1和3的答案非常清楚。 我仍然不确定2和4因为我得到了不同的答案。

java:new File(“”,“name”)!= new file(“name”)? (带有空字符串的文件构造函数)

今天注意到这一点。 鉴于java进程(windows)的PWD中存在名为“existing”的文件。 new File(“existing”).exists() => true new File(“”, “existing”).exists() => false new File(“.”, “existing”).exists() => true 我原本预计,从javadoc系统依赖的默认目录将是“。”。 这一切都是真的,所以这出乎意料。 思考? 谢谢! -roger-

Java在构造函数中设置私有字段

常见的设计实践是将实例变量设为私有,并让公共getter和setter访问它们。 但很多时候,我在互联网上看到过具有构造函数的代码示例,这些构造函数直接将值分配给私有实例变量,而不是使用构造函数内部的setter。 我错过了什么吗? public class Person{ private String name; public Person(String name){ //is this right, seems like the whole encapsulation purpose is defeated this.name = name; //shouldn’t this be used setName(name); } public String getName(){ return this.name; } public void setName(String name){ this.name = name; } }

传递null时选择哪个构造函数?

在下面的示例中,我有两个构造函数:一个接受String,另一个接受自定义对象。 在此自定义对象上,存在一个返回String的方法“getId()”。 public class ConstructorTest { private String property; public ConstructorTest(AnObject property) { this.property = property.getId(); } public ConstructorTest(String property) { this.property = property; } public String getQueryString() { return “IN_FOLDER(‘” + property + “‘)”; } } 如果我将null传递给构造函数,选择哪个构造函数,为什么? 在我的测试中,选择了String构造函数,但我不知道是否总是这样,为什么。 我希望有人可以为我提供一些见解。 提前致谢。

在java中调用另一个构造函数

这是面试中提出的问题。 如果一个类在java中有多个构造函数,我们可以从另一个构造函数调用吗?何时?我怎么称为语法?