Java error: The constructor Item.ItemM() is undefined

Java error: The constructor Item.ItemM() is undefined

我的 运行 我的 java class 与构造函数有问题。看起来我的构造函数有问题,但我无法真正找到错误。 这是代码:

import java.util.Scanner;
public class Item
{
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);

        ItemM myItem = new ItemM();

        System.out.println("Enter item ID");
        String itemID = input.nextLine();

        myItem.setItemID(itemID);
        System.out.printf("The Item ID is %s%n", myItem.getItemID());
    }
    public class ItemM
    {
        private String itemID;

        public ItemM(String itemID)
        {
            this.itemID = itemID;
        }

        public void setItemID(String itemID)
        {
        this.itemID = itemID;
        }

        public String getItemID()
        {
            return itemID;
        }
    }

}

错误是:

ItemM myItem = new ItemM();

我也试过用:

ItemM myItem = new ItemM(itemID);

我需要将它放在一个文件中。

成功static

首先你的 ItemM 需要一个 String 参数。你可以让你的内部 class 静态允许你的 static main 方法在没有 Item 实例的情况下使用它。

public static class ItemM

那么你可以使用

ItemM myItem = new ItemM("a");

或者,

ItemM myItem = new Item().new ItemM("a");

说明

JLS-8.1.3. Inner Classes and Enclosing Instances 说(部分)

An inner class is a nested class that is not explicitly or implicitly declared static.

Inner classes include local (§14.3), anonymous (§15.9.5) and non-static member classes (§8.5).