反射机制的学习(二)

本章就是 通过反射机制写demo

demo1:

package demo;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class UserDomain {
    public String userName;
    private Integer age;
    private UserDomain(){
        System.out.println("构造方法");
    }
    private UserDomain(String userName){
        System.out.println("userName="+userName);
        this.userName = userName;
    }
    private UserDomain(Integer age){
        System.out.println("age="+age);
        this.age = age;
    }
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        //1、初始化操作 无参构造函数
        //UserEntity userEntity = new UserEntity();
        //userEntity.userName="hello";
        //System.out.println(userEntity.userName);

        //2 通过java反射机制创建对象
        Class<?> forName = Class.forName("demo.UserDomain");
        UserDomain userEntity = (UserDomain)forName.newInstance();
        userEntity.userName="hello";
        System.out.println(userEntity.userName);

        //3.反射机制应用的场景 1 jdbc连接  2 spring IOC 底层使用反射机制+DOM4J  3 hibernate mybatis

        //4 使用反射机制获取类的方法名
        Method[] methods = forName.getMethods();
        for (Method method : methods) {
            System.out.println(method.getName());//方法名
        }

        //5、获取类的属性
        Field[] declaredFields = forName.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            System.out.println(declaredField.getName());//属性名
        }

        //初始化不同的公共构造函数创建对象
        //Constructor<?> constructor = forName.getConstructor(String.class);

        //初始化不同的私有构造函数创建对象
        Constructor<?> constructor = forName.getDeclaredConstructor(Integer.class);
        constructor.setAccessible(true);

        UserDomain userEntity2 = (UserDomain) constructor.newInstance(123);
        System.out.println("userEntity2 = " + userEntity2.age);

    }
}

 demo2

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        // 加载驱动类
        Class.forName("com.mysql.jdbc.Driver");

        // 通过DriverManager获取数据库连接
        String url = "jdbc:mysql://192.168.1.150/test";
        String user = "test";
        String password = "123456";
        Connection connection = (Connection) DriverManager.getConnection(
                url, user, password);

        PreparedStatement statement = (PreparedStatement) connection.prepareStatement(
                "insert persion (name, age) value (?, ?)");
        statement.setString(1, "hdu");
        statement.setInt(2, 21);
        statement.executeUpdate();

        ResultSet resultSet = statement.executeQuery("select * from persion");
        // 操作ResultSet结果集
        while (resultSet.next()) {
            // 第一种获取字段方式
            System.out.println(resultSet.getString(1) + " " +
                    resultSet.getString(2) + " " + resultSet.getString(3));
        }

        // 关闭数据库连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

 

 

posted @ 2020-03-28 13:26  An-Optimistic-Person  阅读(80)  评论(0)    收藏  举报