java - 如何在另一个方法中调用类内的构造函数

标签 java class methods constructor

我是一名学生。刚刚收到一份家庭作业,指出我应该调用构造函数方法而不是重用相同的代码。我复制了代码,因为我无法在没有错误的情况下调用构造函数。从单独的方法调用构造函数方法的正确语法是什么?

我确实进行了搜索,但找不到这个特定的(在类(class)内)问题。我确实尝试过使用“this”并创建一个类实例,但我不断收到错误。

import java.util.Random;
public class Coin {

    // variable for a generic coin toss
    private String sideUp;  

    // Constructor 

    // ******************** Instructor notes...
    // This is the same code as your toss() method
    // It is OK to call that method from your constructor.
    // Don't copy/paste code or repeat yourself if not required.
    public Coin() { 
        Random rand1 = new Random();
        int x = rand1.nextInt(2);   
        if (x > 0){
            sideUp = "Heads";
        }else{
            sideUp = "Tails";
        }
    }


    //Void Method
    public void toss() {
        // how to call the Coin constructor above??????????????????????????
        Coin();
    } 
}

最佳答案

反之亦然。将代码移回 toss 方法,然后从构造函数内部调用 toss()

import java.util.Random;
public class Coin {

   // variable for a generic coin toss
   private String sideUp;  

   // Constructor 

   // ******************** Instructor notes...
   // This is the same code as your toss() method
   // It is OK to call that method from your constructor.
   // Don't copy/paste code or repeat yourself if not required.
   public Coin() { 
       toss();  
   }


   //Void Method
   public final void toss() {
       Random rand1 = new Random();
       int x = rand1.nextInt(2);   
       if (x > 0){
           sideUp = "Heads";
       }else{
           sideUp = "Tails";
       }
   } 
}

正如其他评论和答案中指出的那样,调用可能从构造函数重写的方法是一个坏主意。这里有一个很好的解释:Why is it considered bad practice to call a method from within a constructor?

您可以像我在这里所做的那样将该方法设置为final以避免出现问题。

关于java - 如何在另一个方法中调用类内的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22078231/

相关文章:

python - 即使我定义了一个具有该名称的方法,为什么我会在类上收到 AttributeError 错误?

java - 我的 Spring MVC 配置有什么问题?

java - NodeJS 相当于 Java 中的字节

java - 编译Java错误,无法让构造函数工作

javascript - 如何导出 javascript 类以在测试单元中使用?

Javascript 对象方法范围 - 方法失败

java - Metastore db hive - 另一个实例已经在运行

java - 在列表中添加 JavaVO 类时出现空指针异常

c# - 是否有一种正确的方法来菊花链式连接类并以正确的方式调用它?

java - 在 JOptionPane 创建的其他方法中访问字符串?