类加载器&反射
类加载器
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);