java 构建对象实例有几种方法?

解决方案 »

  1.   

    两种.
    1.通过构造方法,new
    2.通过反射Class 类的newInstance方法
      

  2.   

    都是由構造函數來的吧,你問的是design pattern?
      

  3.   

    1、new
    2、clone
    3、方法返回值
      

  4.   

    1、new 
    2、clone 有4种的,记不得了。
      

  5.   

    方法一:new
    方法二:使用工厂模式,引入工厂类
    方法三:使用反射:Class.forName
    方法四:对象克隆
      

  6.   

    有4种显示地创建对象的方式
      1 用new语句创建,这事最常用的创建对象的方式
      2 运用反射手段,调用java.lang.Class 或者 java.lang.reflect.Constructor类的newInstance()
      

  7.   

    3 用对象的clone()方法
    4 运用反序列化手段,调用java.io.ObjectInputStream 对象的readObject()方法
      

  8.   

    我问的是JAVA的一条面试题:请列出构建一个对象实例的几种方法。
      

  9.   


    1、使用关键字new2、使用java反射:class.forName("类名").newInstance()
       注意:类名为:包名+类名3、使用工厂模式,定义一个工厂类
      

  10.   

    1、通过构造方法,new
    2、反序列化
    3、通过反射动态创建对象
      

  11.   

    说白了就一种 new ,无非是你程序代码 new ,还是JDK代码 new 的.clone 还是调用了 new.
    newInstance 里面还是new.
      

  12.   

    方法一:new 
    方法二:使用工厂模式,引入工厂类 这里主要是指接口
    方法三:使用反射:Class.forName 
    方法四:对象克隆 
      

  13.   

    一共有5种
    1.new
    2.反射newInstance
    3.克隆clone
    4.序列化Serializable
    5.使用Spring的DI例子如下1.new
    通常都是使用java的关键字new来创建对象实例。若有一个Something类,则可以通过下面的语句创建Something类的对象实例并指定到变量obj。Java代码 
    Student stu=new Student();2.反射 newInstance
    利用java.lang.Class类的newInstance方法,则可根据Class对象的实例,建立该Class所表示的类的对象实例。创建Something类的对象实例可以使用下面的语句(这样需要一个已经存在的对象实例)。Java代码 Student stu= Student Class.forName("cn.test.Student").newInstance();
    如果包下不存在相应.class文件,则会抛出ClassNotFoundException。注意 :newInstance创建对象实例的时候会调用无参的构造函数,所以必需确保类中有无参数的构造函数,否则将会抛出java.lang.InstantiationException异常。无法进行实例化。3.克隆clone
    JDK中Object# clone()方法的原型是: 
    protected native Object clone() throws CloneNotSupportedException; 方法修饰符是protected,而不是public。这种访问的不可见性使得我们对Object#clone()方法不可见。 所以,必需重写Object的clone方法后才能使用。package cn.test;public class Student implements Cloneable {
    private String username;
    private String password;
    //重写clone方法
    public Object clone() throws CloneNotSupportedException {
    Student stu;
    stu = (Student) super.clone();
    return stu;
    }
    //类的空构造函数
    public Student() {
    }
    //类的带参数构造函数
    public Student(String username, String password) {
    this.username = username;
    this.password = password;
    }
    /**
     * get set 方法
     * 
     * */
    public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public static void main(String[] args) {
    Student student1 = new Student("aa", "11");
    /**
     * 克隆时必须捕获CloneNotSupportedException异常
     * */
    try {
    Student student2 = (Student) student1.clone();
    if (student1 != null) {
    System.out.println(student2);
    } else {
    System.out.println("Clone Not Supported");
    }
    } catch (CloneNotSupportedException c) {
    c.printStackTrace();
    }
    }}4.序列化  Serializable
    序列化之前必须先实现类的Serializable接口
    同时序列化类
    private static final long serialVersionUID = 1L;
    测试代码
    java 
    因为序列化是输出输入流,所以要先抛出IO异常
    public static void main(String[] args)throws IOException {

    try {
    Student stu=new Student("aa","11");
    //创建一个对象输出流
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("d:/obj.dat"));
    oos.writeObject(stu);
    oos.close();
    //创建一个对象输入流
    ObjectInputStream ois=new ObjectInputStream(new FileInputStream("d:/obj.dat"));
    Object obj=ois.readObject();
    Student stuBak=(Student)obj;
    //打印数据在控制台,检查序列化和反序列化是否成功
    System.out.println("stu name is: "+stuBak.getUsername());
    System.out.println("stu pass is: "+stuBak.getPassword());
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    5.使用Spring的DI
    一、定义:Spring 是一个开源的控制反转(Inversion of Control,IoC/DI)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发二、实例化Spring容器:    方法一:在类路径下寻找配置文件来实例化容器ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{“beans.xml”});    方法二:在文件系统路径下寻找配置文件来实例化容器ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:""beans.xml”});注:文件可指定多个可建立单元测试来测试Spring容器的初始化
    http://www.blogjava.net/jzone/articles/321967.html(spring的DI创建实例详细文档)至于还有其他就不知道了,我知道的就是这些。欢迎互相探讨