Tag: 构造函数

来自构造函数的Java调用构造函数

我有一个构造函数 private Double mA; private Double mB; Foo(Double a) { mA = a; mB = a + 10; } Foo(Double a, Double b) { mA = a; mB = b; // some logic here } 如果我像这样调用第二个构造函数: Foo(Double a) { Double b = a + 10; this(a, b); } 比编译器告诉我的那样,那个构造函数应该是第一个语句。 那么我需要将所有逻辑从第二个构造函数复制到第一个构造函数吗?

Java Pattern类没有公共构造函数,为什么?

我一直在审查Java Regex Library,感到惊讶的是Pattern类没有我多年来认为理所当然的公共构造函数。 我怀疑静态compile方法被用于支持构造函数的一个原因可能是构造函数总是返回一个新对象,而静态方法可能返回一个先前创建的(和缓存的)对象,前提是模式字符串是相同的。 但是,如下所示,情况并非如此。 public class PatternCompiler { public static void main(String[] args) { Pattern first = Pattern.compile(“.”); Pattern second = Pattern.compile(“.”); if (first == second) { System.out.println(“The same object has been reused!”); } else { System.out.println(“Why not just use constructor?”); } } } 使用静态方法而不是构造函数的任何其他强有力的理由? 编辑 :我在这里找到了一个相关的问题 。 那里的答案都没有说服我。 通过阅读所有答案,我感觉静态方法相对于公共构造函数在创建对象方面具有相当多的优势,而不是相反。 真的吗? 如果是这样,我将为我的每个类创建这样的静态方法,并安全地假设它更具可读性和灵活性。

初始化对象时构造函数如何工作?

此代码的输出为7 20。 为什么7先打印,然后打印20? public class Television { private int channel = setChannel(7); public Television(int channel) { this.channel = channel; System.out.print(channel +””); } public int setChannel(int channel) { this.channel = channel; System.out.print(channel + “”); return channel; } public static void main(String args[]) { new Television(20); } }

Java – 内部类构造函数 – 仅允许外部类

我的代码中有内部类。 我希望公开访问它的实例,但只有外部类应该能够创建这个实例,就像在“私有”访问中一样。 是否有可能在没有制作适当的小包装(或为每个这样的内部类创建公共接口)? (对不起,如果我的英语不好:P)

Java – 如何只创建具有有效属性的对象?

我正在做一个基本的Java课程,我遇到了一个问题:如果我已经将有效参数传递给构造函数,我该如何创建一个对象? 在实现validation后,我应该创建一个替代类并从那里调用构造函数吗? 或者我应该/可以在类中使用静态方法进行validation吗? 在这种情况下,最佳做法是什么?

为什么一个方法引用ctor“抛出”……抛出?

我正在寻找一种优雅的方式来创建一个dependency injection工厂。 在我的例子中,工厂只需调用一个参数构造函数。 我找到了这个答案,概述了如何将Function用于此类目的。 但我的问题是:在我的情况下,我的ctor声明抛出一些检查exception。 我没有得到:使用对该构造函数的方法引用创建该函数不起作用。 如: import java.util.function.Function; public class Mcve { public Mcve(String s) throws Exception { // whatever } public static void main(String[] args) { Function mcveFactory = Mcve::new; } } 告诉我关于Mcve::new “Unhandled exception:java.lang.Exception”。 虽然这段代码没有调用构造函数。 两个问题: 为什么那个错误? 上面的代码没有调用ctor(还)? 有没有优雅的方法来解决这个难题? (简单地向我的main()添加throws Exception 没有帮助)

Java – 在默认构造函数之前执行的方法

我正在学习java并且偶然地遇到了以下代码,其中在方法之后执行默认构造函数。 public class ChkCons {int var = getVal(); ChkCons(){System.out.println(“我是默认构造函数。”); public int getVal(){System.out.println(“我在方法中。”); 返回10; public static void main(String [] args){ChkCons c = new ChkCons(); }} 输出: 我在方法。 我是默认构造函数。 谁能解释一下为什么会这样? 谢谢。

java静态实例字段和构造函数

在具有静态实例字段的Java类中,是每次访问字段时调用的构造函数,还是仅在第一次访问时调用? 我初始化构造函数中的静态字段,并想知道这是否会导致速度变慢,因为字段是在每次访问时初始化的。

invokespecial和invokeinterface的方法调用

为什么invokespecial用于在java中调用方法? 我在多个地方读过但却无法理解完美的理由? 任何帮助,将不胜感激。

为什么不在java中的匿名类中使用构造函数?它与OOP的规则相矛盾

oops规则是“没有构造函数就没有类可以存在”。没关系。但是在java中,匿名类只能有它的构造函数。因为它没有任何名称。 所以它与OOPS规则相矛盾。我真的很困惑。它是否打破了OOPS规则?请帮忙