反射机制的学习(二)
本章就是 通过反射机制写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(); } }


浙公网安备 33010602011771号