1.类加载器
https://www.cnblogs.com/zhengbin/p/5631987.html
2.反射
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c = Class.forName("myReflect.Student");
Constructor<?>[] constructors = c.getConstructors();//返回public的构造函数
for(Constructor con :constructors){
System.out.println(con);
}
System.out.println("-------------");
Constructor<?>[] cons = c.getDeclaredConstructors();//返回所有的构造函数
for(Constructor con :cons){
System.out.println(con);
}
System.out.println("-------------");
Constructor<?> xon = c.getConstructor();
Object o = xon.newInstance();
System.out.println(o);
}
}
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class ReflectDemo2 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c = Class.forName("myReflect.Student");
Constructor<?> con = c.getConstructor(String.class, int.class, String.class);
Object obj =con.newInstance("test",12,"test");
System.out.println(obj);
}
}
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class ReflectDemo3 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c= Class.forName("myReflect.Student");
Constructor<?> con = c.getDeclaredConstructor(String.class);
//暴力反射,访问私有构造方法
con.setAccessible(true);
Object obj=con.newInstance("test");
System.out.println(obj);
}
}
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
public class ReflectDemo4 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InstantiationException {
Class<?> c = Class.forName("myReflect.Student");
//Field[] fields = c.getFields();
/* Field[] fields = c.getDeclaredFields();
for(Field f:fields){
System.out.println(f);
}*/
Field add = c.getField("address");
Constructor<?> con=c.getConstructor();
Object obj=c.newInstance();
add.set(obj,"adress001");
System.out.println(obj);
}
}
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
public class ReflectDmo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchFieldException {
Class<?> c= Class.forName("myReflect.Student");
Constructor<?> con = c.getConstructor();
Object obj=con.newInstance();
Field fi = c.getDeclaredField("name");
fi.setAccessible(true);
fi.set(obj,"alisa");
System.out.println(obj);
Field fi1 = c.getDeclaredField("age");
fi1.setAccessible(true);
fi1.set(obj,12);
System.out.println(obj);
Field fi2 = c.getDeclaredField("address");
fi2.setAccessible(true);
fi2.set(obj,"address009");
System.out.println(obj);
}
}
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectDemo5 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c= Class.forName("myReflect.Student");
//Method[] methods = c.getMethods();
/* Method[] methods = c.getDeclaredMethods();
for(Method method:methods){
System.out.println(method);
}*/
Method method = c.getMethod("method1");
Constructor<?> con = c.getDeclaredConstructor();
Object obj=con.newInstance();
method.invoke(obj);
}
}
package myReflect;
public class Student {
private String name;
int age;
public String address;
public Student(){}
private Student(String name){
this.name=name;
}
Student(String name,int age){
this.name=name;
this.age=age;
}
public Student(String name,int age,String address){
this.name=name;
this.age=age;
this.address=address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void method1() {
System.out.println("method1");
}
public void method2(String s) {
System.out.println("method2:"+s);
}
public String method3(String s,int j) {
return s+","+j;
}
private void fun() {
System.out.println("method1");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
package myReflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectTest1 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<?> c=Class.forName("myReflect.Student");
Constructor<?> con = c.getDeclaredConstructor();
Object obj=con.newInstance();
Method m1=c.getMethod("method1");
m1.invoke(obj);
Method m2=c.getMethod("method2", String.class);
m2.invoke(obj,"alisa");
Method m3 = c.getMethod("method3", String.class, int.class);
Object oo = m3.invoke(obj, "tets", 12);
System.out.println(oo);
Method m4=c.getDeclaredMethod("fun");
m4.setAccessible(true);
m4.invoke(obj);
}
}
package myReflect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
public class ReflectTest2 {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
ArrayList<Integer> list = new ArrayList<>();
list.add(21);
list.add(66);
list.add(88);
Class<? extends ArrayList> c = list.getClass();
Method m= c.getMethod("add", Object.class);
m.invoke(list,"alisa");
m.invoke(list,"java");
System.out.println(list);
}
}
package myReflect;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;
public class ReflectTest3 {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Properties ps = new Properties();
FileReader fr = new FileReader("array.txt");
ps.load(fr);
fr.close();
String className=ps.getProperty("ClassName");
String methodName=ps.getProperty("MethodName");
Class<?> c= Class.forName(className);
Constructor<?> con= c.getConstructor();
Object obj=con.newInstance();
Method m= c.getMethod(methodName);
m.invoke(obj);
}
}
3. 模块化
3.1模块化概述
3.2 模块的基本使用
3.3 模块服务的使用