报错了,如下

来源: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,这样就会报错呢。

http://img.mukewang.com/climg/5f478f1d09dd07bd03140208.jpg

同学将其改为float就可以了。如下:http://img.mukewang.com/climg/5f478f3e09c5e9f010010104.jpg

如果我的回答解决了你的问题,请采纳,祝学习愉快.

0

0 学习 · 8016 问题

查看课程

相似问题

报错了如下

回答 2

运行报错了

回答 1

回答 1

为什么报错

回答 1