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

时间:2015-09-05 01:05:45

标签: java syntax-error

我无法使用构造函数运行我的java类。看起来我的构造函数有问题,但我找不到错误。 这是代码:

 using System.Diagnostics;
using System.Text;
using System.Windows.Input;
using BasicMVVMQuickstart_Desktop.Model;
using Microsoft.Practices.Prism.Commands;
using Microsoft.Practices.Prism.Mvvm;
namespace BasicMVVMQuickstart_Desktop.ViewModels
{
    public class MainWindowViewModel : BindableBase
    {
        public MainWindowViewModel()
        {
            this.SubmitCommand = new DelegateCommand<object>(this.OnSubmit);
            this.QuestionnaireViewModel = new QuestionnaireViewModel();
            this.ResetCommand = new DelegateCommand(this.OnReset);

        }

        public ICommand SubmitCommand { get; private set; }

        public ICommand ResetCommand { get; private set; }

        public QuestionnaireViewModel QuestionnaireViewModel { get; set; }

        private void OnSubmit(object obj)
        {
          Debug.WriteLine(this.BuildResultString());
          this.QuestionnaireViewModel.Questionnaire.Age = 32;
        }

        private void OnReset()
        {
            this.QuestionnaireViewModel.Questionnaire = new Questionnaire();

        }

        private string BuildResultString()
        {
            StringBuilder builder = new StringBuilder();
            builder.Append("Name: ");
            builder.Append(this.QuestionnaireViewModel.Questionnaire.Name);
            builder.Append("\nAge: ");
            builder.Append(this.QuestionnaireViewModel.Questionnaire.Age);
            builder.Append("\nQuestion 1: ");
            builder.Append(this.QuestionnaireViewModel.Questionnaire.Quest);
            builder.Append("\nQuestion 2: ");
            builder.Append(this.QuestionnaireViewModel.Questionnaire.FavoriteColor);
            return builder.ToString();
        }
    }
}

错误是:

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();

我需要它在一个文件中。

1 个答案:

答案 0 :(得分:2)

设为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说(部分)

  

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

     

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