Three methods of class instantiation

The ultimate purpose of class instantiation is nothing more than to use the properties or methods of class objects. The ...

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 litong
contrast:

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.

4 May 2020, 15:43 | Views: 5984

Add new comment

For adding a comment, please log in
or create account

0 comments