Java错误:构造函数Item.ItemM()未定义



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

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。内部类和封闭实例表示(部分地)

内部类是未显式或隐式声明static的嵌套类。

内部类包括本地(§14.3)、匿名(§15.9.5)和非静态成员类(§8.5)。

最新更新