通过反射创建对象和调用方法
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); } }