类加载器&反射

类加载器


public static void main(String[] args) throws IOException {
    //获取系统类加载器
    ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
    //利用加载器去加载一个指定的文件
    InputStream is = systemClassLoader.getResourceAsStream("prop.properties");
    Properties prop = new Properties();
    prop.load(is);
    System.out.println(prop);
    is.close();
}

反射

获取 Class类的对象



public class demo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
        Class<?> clazz = Class.forName("com.itheima.reflect.Student");
//        method1(clazz);
//        method2(clazz);
//        method3(clazz);
//        method4(clazz);
    }

    private static void method4(Class<?> clazz) throws NoSuchMethodException {
        Constructor<?> declaredConstructor = clazz.getDeclaredConstructor(String.class);//返回单个构造方法
        System.out.println(declaredConstructor);
    }

    private static void method3(Class<?> clazz) throws NoSuchMethodException {
        Constructor<?> constructor = clazz.getConstructor(); //返回单个公共无参构造方法
        System.out.println(constructor);
        Constructor<?> constructor1 = clazz.getConstructor(String.class,String.class);//返回单个公共构造方法
        System.out.println(constructor1);
    }

    private static void method2(Class<?> clazz) {
        Constructor<?>[] declaredConstructors = clazz.getDeclaredConstructors();//所有构造方法对象的数组
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            System.out.println(declaredConstructor);
        }
    }

    private static void method1(Class<?> clazz) {
        Constructor<?>[] constructors = clazz.getConstructors(); //所有公共构造方法对象的数组
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
    }
}




    Class<?> clazz = Class.forName("com.itheima.reflect.Student");
    Constructor<?> constructor = clazz.getConstructor();
    Student o = (Student) constructor.newInstance();  //输出无参构造对象

    Constructor<?> declaredConstructor = clazz.getDeclaredConstructor(String.class);
    declaredConstructor.setAccessible(true);//暴力反射
    Student  s1 = (Student) declaredConstructor.newInstance("小佢");



XML

public static void main(String[] args) throws DocumentException {
        //解析器对象 需要dom4j包
        SAXReader saxReader = new SAXReader();
        //利用解析器将xml文件加载到内存中
        Document read = saxReader.read(new File("test-classloader\\src\\student.xml"));
        ArrayList<Student> list = new ArrayList<>();
        //获取根节点
        Element rootElement = read.getRootElement();
        //根据标签名找Element
        List<Element> studentElement = rootElement.elements("Student");
        for (Element element : studentElement) {
            //Student 标签属性
            Attribute id = element.attribute("id");
            //Student下 节点的name标签的值
            String name = element.element("name").getText();
            String age = element.element("age").getText();
            Student student = new Student(name,Integer.parseInt(age));
            list.add(student);
        }
        for (Student student : list) {
            System.out.println(student);
        }
    }

DTD&schema

DTD约束


schema约束

编写

引入 

枚举&注解

枚举


注解




单元测试&日志技术

单元测试

日志技术

import org.slf4j.Logger; import org.slf4j.LoggerFactory;
private static final Logger LOGGER = LoggerFactory.getLogger(demo.class);