The ultimate purpose of class instantiation is nothing more than to use the properties or methods of class objects. The following describes the effects of three instantiation methods:
First declare a StudentEntity entity class
package com.zlt.others; public class StudentEntity { private String userName; private int password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getPassword() { return password; } public void setPassword(int password) { this.password = password; } }
1. Class instantiation using normal new
//Instantiate StudentEntity object StudentEntity studentEntity = new StudentEntity(); //Call the object's properties and methods studentEntity.setUserName("zhoulitong"); System.out.println(studentEntity.getUserName());The results are as follows:
zhoulitong
2. Use "class. Class" to get, usually in hibernate
//Specifies the type of instanced object StudentEntity studentEntity1 = StudentEntity.class.newInstance(); //Call the set method of the instantiated object to write studentEntity1.setUserName("Utilization class.class To instantiate"); System.out.println(studentEntity1.getUserName());The results are as follows: Use class. Class to instantiate
3. Use the static method of Class to obtain: public static Class <? > forname (string classname) throws classnotfoundexception;
Class<?> student = Class.forName("com.zlt.others.StudentEntity"); //You do not need to specify the type of return object Object ob = student.newInstance(); //Read the specified method of the object Method setNameMethod = student.getMethod("setUserName", String.class); //Call this method with reflection setNameMethod.invoke(ob,"ZHOU"); Method getUserNameMethod = student.getMethod("getUserName"); System.out.println(getUserNameMethod.invoke(ob)); //Read the specified properties of the object Field userName = student.getDeclaredField("userName"); //Unseal: when the attribute is private and the reflection access is used, set setAccessible to true to unseal the private attribute userName.setAccessible(true); userName.set(ob,"litong"); System.out.println(userName.get(ob));The results are as follows:
ZHOU litongcontrast:
1. First, new and newInstance methods, with new as the keyword and newInstance as the method.
2. Creation method: new creates a new class, and newInstance uses the class loading mechanism. When creating a class with new, the class can not be loaded. When using the newInstance method, make sure that the class is loaded. Class.forName() starts the class loader.
3. Limitations: newInstance: weak type, low efficiency, can only call nonparametric construction, decoupling
new: strong type, relatively efficient, can call any public construct.