找不到符号 - 构造函数项()

时间:2012-05-15 18:19:18

标签: java constructor symbols default-constructor

考虑以下代码:

// Create a Item oject
item item = new item();

编译器错误消息:

  

错误 - 找不到符号 - 构造函数项();

班级item

public class item
{
    // Attributes
    private String Itemcode;
    private String Itemname;
    private String Description;
    private String Style;
    private String Finish;
    private float  Unitprice;
    private float  Stock;
    private String Suppliercode;
    private String Suppliername;
    private String Address;

    public item(String ItemcodeIn, String ItemnameIn, String DescriptionIn,
                String StyleIn, String FinishIn, float UnitpriceIn, float StockIn,
                String SuppliercodeIn,
                String SuppliernameIn, String AddressIn)
    {
        Itemcode = ItemcodeIn;
        Itemname = ItemnameIn;
        Description = DescriptionIn;
        Style = StyleIn;
        Finish = FinishIn;
        Unitprice = UnitpriceIn;
        Stock = StockIn;
        Suppliercode = SuppliercodeIn;
        Suppliername = SuppliernameIn;
        Address = AddressIn;
    }

然后这个代码后面跟着属性的所有setter / getter方法。

如何解决此问题?

4 个答案:

答案 0 :(得分:10)

创建参数化构造函数时,除非您创建自己的构造函数,否则将删除默认构造函数。

因此,您必须显式创建默认构造函数,如下所示:

public Item() {}

答案 1 :(得分:6)

您需要添加默认构造函数:

public item() {
   // any initialization you need here
}

您还应该根据最佳做法将您的课程重命名为Item(大写I),并且您的字段应以小写字母开头。

答案 2 :(得分:2)

您的Item类只有1个构造函数:

public item(String ItemcodeIn, String ItemnameIn, String DescriptionIn, 
     String StyleIn, String FinishIn, float UnitpriceIn, float StockIn, 
     String SuppliercodeIn, String SuppliernameIn, String AddressIn)

虽然你试图通过new Item();来访问它。这个构造函数不存在,因为你已经用参数化的构造函数覆盖了它。

您应该在创建Item时提供这些参数,或者创建另一个通用构造函数:

public Item() {
    // Some code goes here
}

答案 3 :(得分:0)

每当你不编写任何构造函数时,默认构造函数默认在类中可用。但是,如果您在任何类中定义编写参数化构造函数,那么只有该参数化构造函数可用。在这种情况下,您必须显式定义默认构造函数。