老师运行结果是什么样的?为什么我的出不来添加的信息呢?

来源: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("商品信息:");

}

}

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

写回答

1回答

好帮手慕小脸

2020-07-06

同学你好,经测试同学的test1方法调用的display方法中只有一条打印输出语句,所以上述结果是正确的

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

但代码中还存在如下几个问题:

1、单独测试test2会出现报错,如下所示:

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

在调用getConstructor方法时,未获取有参构造。同学需要在方法括号中书写类型.class

小数默认为double类型,如果是float类型后面需加上f或F。修改如下:

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

2、包名字母需要全部小写。如:com.imooc.reflectTest更改为:com.imooc.reflecttest

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0

0 学习 · 8016 问题

查看课程