Java 构造函数错误-无法应用于给定类型
我正在写一个CSV解析器,我几乎完成了,但我有一个返回方法的问题。代码几乎和这个网站上的一样,但我还是发现了错误Java 构造函数错误-无法应用于给定类型,java,csv,Java,Csv,我正在写一个CSV解析器,我几乎完成了,但我有一个返回方法的问题。代码几乎和这个网站上的一样,但我还是发现了错误 private static Book createBook(String[] metadata) { String name = metadata[0]; int price = Integer.parseInt(metadata[1]); String author = metadata[2]; //Create and return book
private static Book createBook(String[] metadata) {
String name = metadata[0];
int price = Integer.parseInt(metadata[1]);
String author = metadata[2];
//Create and return book of this metadata
return new Book(name, price, author);
}
我得到一个错误:
Error:(128, 16) java: constructor Book in class java.awt.print.Book cannot be applied to given types;
required: no arguments
found: java.lang.String,int,java.lang.String
reason: actual and formal argument lists differ in length
我不确定是什么导致了这个错误,我已经处理这个问题好几个小时了。提前感谢。证据:
java.awt.print.Book
书
如下:新书(名称、价格、作者)
java.awt.print.Book
实例毫无意义。后者说:
Book
类提供文档的表示,其中页面可能具有不同的页面格式和页面绘制者。此类使用Pageable
接口与PrinterJob
交互
因此,当您真正打算导入/使用自己的书籍
类时,您似乎意外地将java.awt.print.Book
导入到了类中。这可能是由于IDE中的一个不恰当的“自动更正”提示造成的
解决方案:删除/替换伪造的进口声明。证据:
java.awt.print.Book
书
如下:新书(名称、价格、作者)
java.awt.print.Book
实例毫无意义。后者说:
Book
类提供文档的表示,其中页面可能具有不同的页面格式和页面绘制者。此类使用Pageable
接口与PrinterJob
交互
因此,当您真正打算导入/使用自己的书籍
类时,您似乎意外地将java.awt.print.Book
导入到了类中。这可能是由于IDE中的一个不恰当的“自动更正”提示造成的
解决方案:删除/替换伪导入语句。错误的具体原因是,
java.awt.print
包中的Book
类只有一个零参数构造函数,因此只能像这样实例化:
Book b = new Book();
这里有一些事情可能会不时发生。JDK API通常提供一些类,这些类可能听起来像是我们可以在项目中使用它们,但它们的名称往往有点误导性,或者所需的功能不可用
如果是这种情况,您应该创建/使用自己的类
假设您已经有一个与此类似的book类:
public class Book
{
private final String name;
private final int price;
private final String author;
public Book( String name, int price, String author )
{
this.name = name;
this.price = price;
this.author = author;
}
// Getter....
}
您必须为您的项目导入正确的
您可以通过添加正确的导入语句来执行此操作:
import all.my.packages.Book
您可能遇到的另一个问题是,您是否希望使用自己版本的Book
,以及java.awt.print
软件包中的版本。现在我们遇到名称冲突,您必须在使用时指定每个对象:
public static void main( String[] args )
{
String author = "SomeAuthor";
String name = "SomeBook";
int price = 30;
java.awt.print.Book awtBook = new java.awt.print.Book();
playground.test.main.Book myBook = new playground.test.main.Book( name, price, author );
}
但这是大多数情况下您希望避免的。错误的具体原因是,
java.awt.print
包中的Book
类只有一个零参数构造函数,因此只能像这样实例化:
Book b = new Book();
这里有一些事情可能会不时发生。JDK API通常提供一些类,这些类可能听起来像是我们可以在项目中使用它们,但它们的名称往往有点误导性,或者所需的功能不可用
如果是这种情况,您应该创建/使用自己的类
假设您已经有一个与此类似的book类:
public class Book
{
private final String name;
private final int price;
private final String author;
public Book( String name, int price, String author )
{
this.name = name;
this.price = price;
this.author = author;
}
// Getter....
}
您必须为您的项目导入正确的
您可以通过添加正确的导入语句来执行此操作:
import all.my.packages.Book
您可能遇到的另一个问题是,您是否希望使用自己版本的Book
,以及java.awt.print
软件包中的版本。现在我们遇到名称冲突,您必须在使用时指定每个对象:
public static void main( String[] args )
{
String author = "SomeAuthor";
String name = "SomeBook";
int price = 30;
java.awt.print.Book awtBook = new java.awt.print.Book();
playground.test.main.Book myBook = new playground.test.main.Book( name, price, author );
}
但是这是你大多数时候都想避免的事情。你有一本构造函数
公共书籍(stringv1,intv2,stringv3)
你能把你的书贴出来吗class@notyou另一条路在附近。他正在传递3个参数,但是java.awt.print.Book
有一个零argument构造函数。@不,你是在我的评论发布后看到的。但是OP:您使用java.awt.print
包中的Book
类有什么具体原因吗?如果是这样的话,您就不能像尝试导入java.awt.print.Book
那样实例化一次,因为您显然想使用其他的Book类。删除import语句并导入正确的类。您是否有构造函数public Book(stringv1、intv2、stringv3)
可以发布您的书吗class@notyou另一条路在附近。他正在传递3个参数,但是java.awt.print.Book
有一个零argument构造函数。@不,你是在我的评论发布后看到的。但是OP:您使用java.awt.print
包中的Book
类有什么具体原因吗?如果是这样的话,您就不能像尝试导入java.awt.print.Book
那样实例化一次,因为您显然想使用其他的Book类。删除导入语句并导入正确的类。