1、反射創建對象,該對象有一個無參的構造方法
//reflect.User表示User類的全路徑
User user = (User) Class.forName("reflect.User").newInstance();
2、反射創建對象,該對象有 有參的構造方法
//getConstructor(String.class,String.class)表示該構造方法有兩個參數,參數類型為String
//newInstance("張三","20") :給參數賦值
User user1=(User) Class.forName("reflect.User").getConstructor(String.class,String.class).newInstance("張三","20");
3、反射方法:先得到對象,通過對象反射方法
Method method = user.getClass().getMethod("sayHello", String.class); //“sayHello方法名” method.invoke(user, "張三"); //給方法參數賦值
全部代碼
package reflect; import java.lang.reflect.Method; public class demo1 { public static void main(String[] args) { try { User user = (User) Class.forName("reflect.User").newInstance(); User user1=(User) Class.forName("reflect.User").getConstructor(String.class,String.class).newInstance("張三","20"); System.out.println(user); System.out.println(user1); //通過對象反射方法 Method method = user.getClass().getMethod("sayHello", String.class); method.invoke(user, "張三"); } catch (Exception e) { e.printStackTrace(); } } } class User{ private String name; private String age; public User(){} public User(String name,String age) { this.name = name; this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } public void sayHello(String name) { System.out.println("Hello "+name); } }
