Java 在另一个类中初始化类的方法

Java 在另一个类中初始化类的方法,java,Java,在Leetcode上编写关于二进制搜索树的问题的代码时,我遇到了以下情况: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public List<Integer> inorderTraversal (TreeNode root) { // the variables

在Leetcode上编写关于二进制搜索树的问题的代码时,我遇到了以下情况:

public class TreeNode {
  int val;
  TreeNode left;
  TreeNode right;
  TreeNode(int x) { val = x; }
}

public class Solution {
    public List<Integer> inorderTraversal (TreeNode root) { 
 // the variables below are defined by myself.

        Stack <TreeNode> stack = new Stack<TreeNode>();
        ArrayList<Integer> res = new ArrayList<Integer>();
        TreeNode curr = root; 
        ...
    }
}

编译器引发了一个错误。我不知道为什么不能以这种方式将
TreeNode
定义为临时变量。

您的
TreeNode
类没有无参数构造函数

由于您已使用
int
参数定义了构造函数,编译器将不会为您创建默认构造函数

这样的事情(假设有道理)会起作用:

TreeNode cust = new TreeNode(someIntValue);

TreeNode构造函数具有参数int x,因此如果只编写“TreeNode curr=new TreeNode();”,则会出现错误。您只需为参数添加一个int

解决方案:“TreeNode curr=新的TreeNode(4);”


只需添加任何int值。

Java允许您在没有在类中显式创建自己的构造函数的情况下使用默认构造函数(没有参数的构造函数)。
一旦您创建了自己的构造函数,在您的例子中,
TreeNode(intx){val=x;}
您就不能再为该类使用默认构造函数了。

Oh!知道了!非常感谢你!是 啊非常感谢你!
TreeNode cust = new TreeNode(someIntValue);