本篇对java基础最后一部分反射进行总结,主要对反射的基本用法进行了讲解;接下来会继续更新mysql、jdbc、ssm等java开发知识;以下代码可以直接复制到idea中运行;
第一篇:
package java_fanshe;
//TODO 反射:
public class java_53 {
public static void main(String[] args) {
//java中的类主要分为三种:1.java核心类库中的类:String Object;2.JVM软件平台开发商;3.自己写的类:例如User。Person
//类加载器也有三种:1.BootClassLoader:启动类加载器(加载类时,采用操作系统平台语言实现);2.PlatformClassLoader:平台类加载器;3.AppClassLoader:应用类加载器;
//TODO 获取类的信息:
Class<Student> studentClass = Student.class;
//获取类的加载器对象:
ClassLoader classLoader = studentClass.getClassLoader();
System.out.println(classLoader);
System.out.println(classLoader.getParent());
System.out.println(classLoader.getParent().getParent());
}
}
class Student{
//此处写对应的属性以及方法,因为主要想演示反射的用法,此处就不写相应的属性和方法了;
}
第二篇:
package java_fanshe;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//TODO 反射练习:
public class java_54 {
public static void main(String[] args) throws Exception {
//利用反射的方式获取类和对象以及对属性赋值;
//获取这个类的信息:
Class<User1> user1Class = User1.class;
//获取构造方法:
Constructor<User1> declaredConstructor = user1Class.getDeclaredConstructor();
//实例化对象:
User1 user1 = declaredConstructor.newInstance();
//获取对象的属性:
Field account = user1Class.getDeclaredField("account");//此处如果是getField那么获取的是public修饰的,其他的要用这个方法来获取;
Field password = user1Class.getDeclaredField("password");
//给属性赋值:
account.set(user1, "zhangsan");
password.set(user1, "zhangsan");
//获取登陆方法:
Method login = user1Class.getMethod("login");
//调用方法:
Object invoke = login.invoke(user1);
System.out.println(invoke);
}
}
class User1 {
String account;
String password;
public boolean login() {
if ("admin".equals(account) && "admin".equals(password)) {
return true;
} else {
return false;
}
}
}