Heim >Java >javaLernprogramm >Detaillierte Erläuterung des Erhaltens von Objekten über die Klassenklasse

Detaillierte Erläuterung des Erhaltens von Objekten über die Klassenklasse

零下一度
零下一度Original
2017-06-28 09:33:191305Durchsuche

Der Weg, ein Objekt über das Klassenobjekt abzurufen, besteht darin, es über class.newInstance() abzurufen und ein Objekt durch Aufrufen der Standardkonstruktionsparameter zu instanziieren.

 1 /** 2  * Created by hunt on 2017/6/27.   
 * 测试的实体类 4  
 * @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法 5  
 */ 6 @Data 7 public class Person { 8     private String name; 9     
 private int age;10 }

 1 /** 2  * Created by hunt on 2017/6/27. 3  
 */ 4 public class NewInstanceTest { 5     public static void main(String[] args) { 6         
 Class<Person> personClass = Person.class;//获取Class实例 7         try { 8             
 Person p = personClass.newInstance();//通过Class获得Person实例 9             
 p.setAge(28);10             p.setName("hunt");11             
 System.out.println(p);12         } catch (InstantiationException e) {13             
 e.printStackTrace();14         } catch (IllegalAccessException e) {15             
 e.printStackTrace();16         }17     }18 }

Tipp: class.newInstance() wird über einen Konstruktor ohne Argumente instanziiert. Standardmäßig wird ein Objekt verwendet Es gibt einen Konstruktor ohne Parameter. Wenn es einen Konstruktor ohne Parameter gibt, gibt es keinen Konstruktor ohne Parameter. Wenn das Objekt durch Reflektion abgerufen wird, wird eine java.lang.InstantiationException-Ausnahme ausgelöst.

 1 /** 2  * Created by hunt on 2017/6/27. 3  
 * 测试的实体类 4  */ 5  6 public class Person { 7     private String name; 8     
 private int age; 9 10     public String getName() {11         return name;12     }13 14     
 public int getAge() {15         return age;16     }17 18     public void setName(String name) {19         
 this.name = name;20     }21 22     public void setAge(int age) {23         this.age = age;24     }25 26     
 public Person(String name,int age){}//有参数构造函数27 }
 1 /** 2  * Created by hunt on 2017/6/27. 3  */ 4 public class NewInstanceTest { 5     
 public static void main(String[] args) { 6         Class<Person> personClass = Person.class;//获取Class实例 7         
 try { 8             Person p = personClass.newInstance();//通过Class获得Person实例 9            
  p.setAge(28);10             
 p.setName("hunt");11             System.out.println(p.getAge()+"----"+p.getName());12         } 
 catch (InstantiationException e) {13             e.printStackTrace();14         } 
 catch (IllegalAccessException e) {15             e.printStackTrace();16         }     }
  }

Zusammenfassung: Wenn Sie in Zukunft Entitätsklassen erstellen, müssen Sie ein Nein-Argument mitbringen Konstruktor, damit beim Instanziieren des Objekts bei zukünftiger Verwendung von Reflektion keine Ausnahme ausgelöst wird.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Erhaltens von Objekten über die Klassenklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn