老师运行结果是什么样的?为什么我的出不来添加的信息呢?
来源:3-4 自由编程
阿硕A
2020-07-05 20:26:46
package com.imooc.reflectTest;
import java.lang.reflect.Constructor;
import org.junit.Test;
public class GoodsTest {
@Test
/**
* 无参
*/
public void test1() throws Exception {
//获得类的字节码文件对应的对象
Class class1 = Class.forName("com.imooc.reflectTest.Goods");
Constructor con=class1.getConstructor();
Goods goods = (Goods) con.newInstance();//类似Goods goods=new Goods();
goods.display();
}
@Test
/**
* 有参
*/
public void test2() throws Exception {
//获得类的字节码文件对应的对象
Class class2 = Class.forName("com.imooc.reflectTest.Goods");
Constructor con2=class2.getConstructor();
Goods goods=(Goods) con2.newInstance(1,"三国演义",40.5,"三大名著之一");
System.out.println(goods);
}
}
package com.imooc.reflectTest;
public class Goods {
private int id;
private String name;
private float price;
private String desp;
public Goods() {
}
public Goods(int id, String name, float price, String desp) {
super();
this.id = id;
this.name = name;
this.price = price;
this.desp = desp;
}
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 getDesp() {
return desp;
}
public void setDesp(String desp) {
this.desp = desp;
}
@Override
public String toString() {
return "Goods [id=" + id + ", name=" + name + ", price=" + price + ", desp=" + desp + "]";
}
public void display() {
System.out.println("商品信息:");
}
}
1回答
同学你好,经测试同学的test1方法调用的display方法中只有一条打印输出语句,所以上述结果是正确的
但代码中还存在如下几个问题:
1、单独测试test2会出现报错,如下所示:
在调用getConstructor方法时,未获取有参构造。同学需要在方法括号中书写类型.class
小数默认为double类型,如果是float类型后面需加上f或F。修改如下:
2、包名字母需要全部小写。如:com.imooc.reflectTest更改为:com.imooc.reflecttest
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题