老师看看我的回答有需要改进的地方吗以及一个问题
来源:3-4 自由编程
Wonwayshon
2021-01-03 20:37:02
package com.imooc.reflect.project; public class Goods { private int id; //商品编号 private String name; //商品名称 private double price; //商品价格 private String description; //商品描述 //无参构造及带参构造 public Goods(int id, String name, double price, String description) { super(); this.id = id; this.name = name; this.price = price; this.description = description; } public Goods() { super(); } //get和set方法 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 double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } //toString()方法 @Override public String toString() { return "Goods [id=" + id + ", name=" + name + ", price=" + price + ", description=" + description + "]"; } //无返回值的display()方法,方法内输出信息:商品信息 public void display() { System.out.println("商品编号:"+this.getId()+" 商品名称:"+this.getPrice()+" 商品价格:"+this.getPrice()+" 商品描述:"+this.getDescription()); } }
package com.imooc.reflect.project; import java.lang.reflect.Constructor; import org.junit.Test; public class ConstrustorTest { //通过Constructor获得无参构造方法,并得到Goods类的对象,然后调用display()方法 @Test public void demo1() throws Exception { Class clazz=Class.forName("com.imooc.reflect.project.Goods"); Constructor cons=clazz.getConstructor(); Goods goods=(Goods)cons.newInstance(); goods.display(); } //通过Constructor获得有参构造方法,并得到Goods类的对象,然后输出该对象 @Test public void demo2() throws Exception { Class clazz=Class.forName("com.imooc.reflect.project.Goods"); Constructor cons=clazz.getConstructor(int.class,String.class,double.class,String.class); Goods goods=(Goods)cons.newInstance(01,"Lumia950xl",5499.99,"搭载全新的Windows Mobile操作系统的设备"); System.out.println(goods); } }
老师,在如下这部分代码中是为什么int.class不应该用包装类Integer.class吗,基本数据类型为啥也有.class,基本数据类型的.class表示什么呢,和引用数据类型.class表达的一样吗
clazz.getConstructor(int.class,String.class,double.class,String.class);
1回答
同学你好,1. 测试运行同学代码是正确的,棒棒哒!继续加油!
2. 使用int和Integer都是可以的。但建议实体类中定义属性类型时使用Integer,使用int会有默认值。例如:
学生实体类中有成绩属性int类型,如果学生成绩是0,无法知道学生是缺考还是考了0分。如果使用Integer类型,缺考就是null,考了0分就是0。
3. .class表达的意思是一样的,int.class就是一个int的字节码类,而Integer.class是Integer的字节码类。同学可以理解为是一种语法,一般在需要指定某个类型时会用到,类型需要使用class来指明,比如:Integer-->Integer.class
祝学习愉快!
相似问题