构造方法参数问题
来源:3-4 自由编程
饭勺超人
2019-07-02 20:49:06
public class GoodsTest {
public static void main(String[] args) {
try {
Class goodsClass = Class.forName("com.imooc.test.Goods");
Constructor cs1 = goodsClass.getConstructor();
Goods goods = (Goods)cs1.newInstance();
goods.disPlay();
Constructor cs2 = goodsClass.getConstructor(String.class, String.class,Float.TYPE, String.class);
Goods goods1 = (Goods)cs2.newInstance("001", "手机", 5000.00, "很漂亮");
goods1.disPlay();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class Goods {
private String goodsId;
private String goodsName;
private Float goodsPrice;
private String goodsDesp;
public Goods() {
}
public Goods(String goodsId, String goodsName, Float goodsPrice, String goodsDesp) {
this.goodsId = goodsId;
this.goodsName = goodsName;
this.goodsPrice = goodsPrice;
this.goodsDesp = goodsDesp;
}
public String getGoodsId() {
return goodsId;
}
public void setGoodsId(String goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public float getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(float goodsPrice) {
this.goodsPrice = goodsPrice;
}
public String getGoodsDesp() {
return goodsDesp;
}
public void setGoodsDesp(String goodsDesp) {
this.goodsDesp = goodsDesp;
}
@Override
public String toString() {
return "Goods{" +
"goodsId='" + goodsId + '\'' +
", goodsName='" + goodsName + '\'' +
", goodsPrice=" + goodsPrice +
", goodsDesp='" + goodsDesp + '\'' +
'}';
}
public void disPlay(){
System.out.println(toString());
}
}
Goods{goodsId='null', goodsName='null', goodsPrice=null, goodsDesp='null'}
java.lang.NoSuchMethodException: com.imooc.test.Goods.<init>(java.lang.String, java.lang.String, float, java.lang.String)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at com.imooc.test.GoodsTest.main(GoodsTest.java:13)
老师帮忙看下,float.class可以,Float.TYPE 报错(类和测试类同时修改的)老师帮忙看下
1回答
芝芝兰兰
2019-07-03
同学你好。关键是float类型需要使用以f结尾的小数来赋值。
1、如果直接写小数,java会认为是double类型:
可以看到声明即报错

报错信息如下:


2、无论Goods的属性声明为Float包装类还是float基本数据类型,使用修改后的test运行结果均如下:


如果解答了同学的疑问,望采纳~
祝学习愉快~
相似问题
回答 1
回答 1