实例化对象的两种形式:
1)通过关键字new
2)通过反射机制完成
package test;//Book类class Book { private String title; private double price; public void setPric(double price) { this.price = price; } public void setTitle(String title) { this.title = title; } @Override public String toString() { return "图书名称:"+ title + " 价格:" + price; }}public class TestReflection { public static void main(String[] args) throws Exception { Class cls = Class.forName("test.Book"); //包名.类名 Book book = (Book) cls.newInstance(); book.setTitle("Java"); book.setPric(10.01); System.out.println(book.toString()); //图书名称:Java 价格:10.01 }}
Q:如果类中没有提供无参构造方法,只提供了有参构造方法,则必须明确调用指定的构造方法才可以通过反射实例化对象
package test;import java.lang.reflect.Constructor;//Book类class Book { private String title; private double price; public Book(String title,double price){ this.price = price; this.title = title; } @Override public String toString() { return "图书名称:"+ title + " 价格:" + price; }}public class TestReflection { public static void main(String[] args) throws Exception { Class cls = Class.forName("test.Book"); Constructor cons = cls.getConstructor(String.class,double.class); Book book = (Book) cons.newInstance("Java",10.01); System.out.println(book.toString()); //图书名称:Java 价格:10.01 }}