简单的问题。有心友写过类似这样的代码(只是为了给你解释我的问题,一点用都没有....)classExample{privateint[]tab=newint[10];publicExample(){for(inti=0;i我告诉他他应该将new放在构造函数中classExample{privateint[]tab;publicExample(){tab=newint[10];...}当他问我为什么时,我不知道该怎么回答:除了“这样更好”之外,我没有明确的论据。按照我的学习方式,您可以使用基本类型(int、double...)初始化变量,但对于数组,您应该在构造函数中进行初始化。所以:真
这个问题在这里已经有了答案:Javadefaultconstructor(13个答案)关闭9年前。如果类具有参数化构造函数,为什么Java不提供默认构造函数?考虑以下示例classA{inta;publicA(){}publicA(intval){a=val;}}这里我明确需要添加默认构造函数。有什么原因,为什么Java不为具有参数化构造函数的类提供默认构造函数?
使用JPA时,默认构造函数是否必须为空?由于我不知道JPA的内部工作原理,所以我担心当默认构造函数自行执行某些操作(例如使用默认值填充属性等)时,JPA可能会错误地初始化对象。谢谢。 最佳答案 为了最小化JPA的运行时开销,但在用户代码中创建新实例时强制执行约束:使用没有/很少代码的protected无参数构造函数来促进最快路径实现,并且客户端代码的n-arg构造函数,包含根据约束实例化新对象所需的代码。 关于java-JPA:默认构造函数是否需要为空?,我们在StackOverflow
我一直在学习继承,我只是好奇。我知道即使您不使用super()运算符,子类也会自动调用父类(superclass)的构造函数,所以我想知道子类是否有必要在其中包含构造函数. 最佳答案 如果父类(superclass)没有默认构造函数(或具有子类无法访问的构造函数),则子类需要一个构造函数。如果子类根本没有构造函数,编译器将自动创建一个public构造函数,它只是调用父类(superclass)的默认构造函数。关于调用super():每个构造函数必须做的第一件事是通过调用this()(可能带有一些参数)来调用同一类中的不同构造函数)或
我正在使用将本地文件作为输入的CSVReader类。但是现在,我需要能够读取本地文件以及具有URL路径的文件(如http://example.com/example.txt)。为此,我想从CSVReader派生一个类来标识文件是本地文件还是URL,然后在构造函数的第一行中使用super()将InputStream传递给父级。这样做的优雅方式是什么?publicclassFileReaderextendsCsvReader{publicFileReader(){if(fileName!=null){if(fileName.trim().startsWith("http:")){//iti
这里是代码,我定义了两个类,分别是Father和Son,并在main函数中创建它们:publicclassTest{publicstaticvoidmain(String[]args){Fatherfather=newSon();}}classFather{privateStringname="father";publicFather(){who();tell(name);}publicvoidwho(){System.out.println("thisisfather");}publicvoidtell(Stringname){System.out.println("thisis"+
在generalcase中对此进行了很好的讨论。.但是,我特别想知道为什么Pattern类使用compile创建对象的静态方法,而不是构造函数?在我看来使用构造函数更直观。 最佳答案 Pattern类比JDK中的很多东西都新。因此,我相信他们采用了更现代的使用工厂方法的方法,而不是使用公共(public)构造函数的旧方法。您无法真正改造现有类的工厂方法。一般来说,没有太多理由在工厂方法上使用构造函数,所以我认为仅此而已。工厂方法允许您抽象对象创建,这非常有用。 关于java-为什么Jav
这就是我想要做的(在Java1.6中):publicclassFoo{publicFoo(){Barb=newBar();b.setSomeData();b.doSomethingElse();this(b);}publicFoo(Barb){//...}}编译器说:calltothismustbefirststatementinconstructor有什么解决方法吗? 最佳答案 你可以这样实现它:publicclassFoo{publicFoo(){this(makeBar());}publicFoo(Barb){//...}pr
我一直以为构造函数不是继承的,但是看看这段代码:classParent{Parent(){System.out.println("S1");}}classChildextendsParent{Child(){System.out.println("S2");}}publicclassTest5{publicstaticvoidmain(String[]args){Childchild=newChild();}}//RESULT://S1//S2说明Child继承了构造函数。为什么结果上有S1?是否有可能创建2个不带参数的构造函数并且在结果上只有子构造函数而没有基本构造函数(仅S2)?
我注意到构造函数和类的简单方法做同样的工作。创建一个类的构造的确切原因是什么?如果我创建MyClass(){}构造函数和MyClassMethod(){}方法,它将执行与我编写这些方法和构造函数的主体部分相同的工作。那么构造的必要性是什么?它有什么特殊用途吗? 最佳答案 构造函数和方法是两个不同的东西。您可以在其中编写相同或相似的代码这一事实无关紧要。创建新对象时,将调用构造函数。如果您不指定一个,编译器将为您创建一个默认值。这是对象字段初始化和为对象分配内存的地方。这是所有面向对象语言都有的概念。必须以某种方式初始化新对象。需要分