ホームページ >Java >&#&チュートリアル >Classクラスによるオブジェクト取得の詳細説​​明

Classクラスによるオブジェクト取得の詳細説​​明

零下一度
零下一度オリジナル
2017-06-28 09:33:191307ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。