有几种创建对象的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有几种创建对象的方法相关的知识,希望对你有一定的参考价值。

作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字、使用Class类的newInstance方法、使用Constructor类的newInstance方法、使用Clone方法、使用反序列化。

使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Student student = new Student();
使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象,如:Student student2 = (Student)Class.forName("根路径.Student").newInstance(); 或者:Student stu = Student.class.newInstance();
使用Constructor类的newInstance方法:次方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。如: Constructor<Student> constructor = Student.class.getInstance(); Student stu = constructor.newInstance(); 这两种newInstance的方法就是大家所说的反射,事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架Spring、Hibernate、Struts等使用后者的原因。
使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法。如:Student stu2 = <Student>stu.clone();
使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象,在反序列化时,JVM创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口。如:ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); Student stu3 = (Student)in.readObject();
参考技术A public class Customer implements Cloneable

    private String name;
    private int age;
 
    public Customer()
    
        this("unknown", 0);
        System.out.println("默认的构造方法");
    
 
    public Customer(String name, int age)
    
        this.name = name;
        this.age = age;
        System.out.println("the second constructor");
    
 
    public Object clone()throws CloneNotSupportedException
    
        return super.clone();
    
 
    public boolean equals(Object o)
    
        if(this==o) return true;
        if(! (o instanceof Customer))
            return false;
        Customer c = (Customer)o;
        if(this.name.equals(c.name) && this.age==c.age)
            return true;
        else
            return false;
    
 
    public String toString()
    
        return "name="+name+",age="+age;
    
 
    public static void main(String[] args)throws Exception
    
         
        //运用new语句创建对象
        Customer c1 = new Customer("7Lde",30);
        System.out.println("c1: "+c1);
 
        //运用反射手段获得Customer对象
        Class objClass = Class.forName("Customer");
        Customer c2 = (Customer)objClass.newInstance();
        System.out.println("c1: "+c1);
 
        //运用克隆手段获得Customer对象
        Customer c3 = (Customer)c1.clone();
        System.out.println("c1==c3: "+ (c1==c3));
        System.out.println("c1.equals(c3): "+ (c1.equals(c3)));
        System.out.println("c3: "+ c3);
        
    

JavaScript对象的创建方式有几种?怎么用?

JavaScript对象的创建方式有几种?怎么用?

对象是JavaScript的基本数据类型,对象不仅是字符串到值的映射还保持自有属性,JavaScript对象可以从一个称为原型的对象继承属性,对象的方法通常是继承的属性。

1. JavaScript对象是什么?

JavaScript中的所有事物都是对象:字符串、数值、数组、函数等都可以认为是对象,此外JavaScript 允许自定义对象对象可以拥有属性和方法。

2. JavaScript创建对象操作

创建自定义javascript对象有两种方式:

①通过顶级Object类型来实例化一个对象

②通过对象字面量创建一个对象

Object类创建对象的示例代码:

<script>
    var person = new Object();

    // 添加属性:
    person.name = 'tom';
    person.age = '25';

    // 添加方法:
    person.sayName = function()
        alert(this.name);
    

    // 调用属性和方法:
    alert(person.age);
    person.sayName();
</script>

对象字面量创建对象的示例代码:

<script>
    var person2 = 
        name:'Rose',
        age: 18,
        sayName:function()
            alert('My name is' + this.name);
        
    

    // 调用属性和方法:
    alert(person2.age);
    person2.sayName();
</script>

说明:

调用属性和方法的操作都是通过点语法的方式来完成,对象的创建推荐使用字面量方式,因为更加简单。

以上是关于有几种创建对象的方法的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript问题 在JS里创建object有几种写法

Spring 创建Bean的几种形式

JAVA创建对象有哪几种方式 ???

JS创建对象的几种方式

InetAddress创建对象的方法

获得Class类对象的几种方法