报错了,如下
来源:3-4 自由编程
大圣归来²
2020-08-27 18:35:52
package com.imooc.reflect.test;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.junit.Test;
public class ReflectTest {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// TODO Auto-generated method stub
//获取无参构造方法并且调用display方法
Class<?> class1=Class.forName("com.imooc.reflect.test.Goods");
// Constructor<?> c=class1.getConstructor();
// Goods p=(Goods) c.newInstance();
// p.display();
Constructor<?> c1=class1.getConstructor(int.class,String.class,Float.class,String.class);
Goods s=(Goods) c1.newInstance(2,"理论力学",255f,"燕山大学出版社");
System.out.println(s);
}
// @Test
// public void demo1() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
// Class<?> class1=Class.forName("com.imooc.reflect.test.Goods");
// Constructor<?> cl=class1.getConstructor();
// Goods p=(Goods) cl.newInstance();
// System.out.println(p.toString());
// }
}
package com.imooc.reflect.test;
public class Goods {
private int id;
private String name;
private float price;
private String desc;
public Goods() {
super();
// TODO Auto-generated constructor stub
}
public Goods(int id, String name, float price, String desc) {
super();
this.id = id;
this.name = name;
this.price = price;
this.desc = desc;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "[id=" + id + ", name=" + name + ", price=" + price + ", desc=" + desc + "]";
}
public static void display() {
System.out.println("商品信息");
}
}
Exception in thread "main" java.lang.NoSuchMethodException: com.imooc.reflect.test.Goods.<init>(java.lang.String, java.lang.String, java.lang.Float, java.lang.String)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at com.imooc.reflect.test.ReflectTest.main(ReflectTest.java:17)
1回答
好帮手慕小脸
2020-08-27
同学你好,这里因为同学在Goods中定义的是float,而在获取Constructor对象时传入的是Float.class,这样就会报错呢。

同学将其改为float就可以了。如下:
如果我的回答解决了你的问题,请采纳,祝学习愉快.
相似问题