Java基础29-反射

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 模块服务的使用

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值