15.2.1通过无参构造实例化对象
【例15.3]通过Class类实例化对象
c = Class.forName("file.Person");
per = (Person) c.newInstance();
package file;
class Person
{
private int age;
private String name;
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
public String toString() {
return this.name+"的年龄是"+this.age;
}
}
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");
}
catch (Exception e)
{
e.printStackTrace();
}
Person per =null;
try
{
// (Person) c.newInstance();实例化person对象
per = (Person) c.newInstance();
} catch (Exception e)
{
e.printStackTrace();
}
per.setAge(20);
per.setName("yxc");
System.out.println(per);
}
}
【例15.4】错误的代码
public Person(String name,int age)
{
this.setAge(age);
this.setName(name);
}
package file;
class Person
{
private int age;
private String name;
public Person(String name,int age)
{
this.setAge(age);
this.setName(name);
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
public String toString() {
return this.name+"的年龄是"+this.age;
}
}
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");
}
catch (Exception e)
{
e.printStackTrace();
}
Person per =null;
try
{
// (Person) c.newInstance();实例化person对象
per = (Person) c.newInstance();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
15.2.2调用有参构造实例化对象
【例15.5】调用类中的有参构造
Constructor<?> cons[] = null;
cons = c.getConstructors();
per = (Person) cons[0].newInstance("张三",20);
package file;
import java.lang.reflect.Constructor;
class Person
{
private int age;
private String name;
public Person(String name,int age)
{
this.setAge(age);
this.setName(name);
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
public String toString() {
return this.name+"的年龄是"+this.age;
}
}
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");
}
catch (Exception e)
{
e.printStackTrace();
}
Person per =null;
Constructor<?> cons[] = null;
cons = c.getConstructors();
try
{
per = (Person) cons[0].newInstance("张三",20);
} catch (Exception e)
{
e.printStackTrace();
}
System.out.println(per);
}
}