无法将构造器应用到给定的类型

一.

今天写程序时出现这个问题,困扰了我很久。在网上搜索各种解决方案都没有得到解决。原因是我的java基础太差。

现在把错误的地方记录下来,以免之后再犯。


一眼就可以看出来我new的方法错了,这里我是要new一个对象数组,而如果用了Book()的话就是new一个简单的Book对象。

这里主要还是讲一下如何看这一个报错:

需要:没有参数,说明这个地方不需要形参。

找到:说明在这里找到了int的形参类型。说明和  需要: 冲突。

原因:上面两个看懂了就是这样了。

在Java,如果遇到“无法将类构造器应用给定类型”的错误,通常是因为你在试图创建某个对象时,使用的构造函数与目标类型的期望构造器不匹配。这可能是以下几个原因: 1. **不兼容的参数列表**:尝试使用了一个接受不同参数或参数数量的构造函数。检查构造函数是否与所需实例化的类的构造函数一致。 ```java // 错误示例: YourClass yourObj = new YourClass(paramThatDoesntFit); // 如果YourClass只有一个无参构造,这里会出错 ``` 2. **缺少默认构造函数**:有些类需要显式提供构造函数,如果没有提供默认构造函数(即没有`public YourClass()`),那么在创建对象时就需要明确指定参数。 ```java class RequiresParams { private String name; public RequiresParams(String name) { ... } // 缺少无参构造 } RequiresParams obj = new RequiresParams("example"); // 必须提供name参数 ``` 3. **静态工厂方法**:有时候使用static工厂方法代替构造函数可以避免这个问题。例如,`YourClass.createInstance(param)`。 4. **泛型类型转换限制**:如果你正在从父类型引用子类型,可能会遇到这种问题。除非进行了显式的类型转换,否则无法直接创建子类的对象。 ```java List<ParentType> list = new ArrayList<>(); // 这里不能直接用子类的构造器,需要强制转换 SubClass subObj = (SubClass) list.get(0).new SubClass(); ``` 解决此问题的关键是检查并确保正确的构造函数被用于实例化对象。如果必要,可以添加适当的构造函数、工厂方法,或者做类型转换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值