>Java >java지도 시간 >Class 클래스를 통해 객체를 얻는 방법에 대한 자세한 설명

Class 클래스를 통해 객체를 얻는 방법에 대한 자세한 설명

零下一度
零下一度원래의
2017-06-28 09:33:191281검색

Class 객체를 통해 객체를 얻는 방법은 class.newInstance()를 통해 객체를 얻고 기본 구성 매개변수를 호출하여 객체를 인스턴스화하는 것입니다.

 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 }

팁: class.newInstance()는 매개변수 없는 생성자를 통해 인스턴스화됩니다. 객체에는 기본적으로 매개변수 없는 생성자가 있으면 매개변수 없는 생성자는 더 이상 존재하지 않습니다. 리플렉션을 통해 객체를 얻을 때 java.lang.InstantiationException 예외가 발생합니다.

 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         }     }
  }

요약: 나중에 엔터티 클래스를 만들 때 리플렉션을 사용할 때 개체를 인스턴스화할 때 예외가 발생하지 않도록 인수 없는 생성자를 가져와야 합니다.

위 내용은 Class 클래스를 통해 객체를 얻는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.