精华内容
下载资源
问答
  • 1、用new语句创建对象,这是最常见的创建对象的方法。Student student = new Student();2、通过工厂方法返回对象,如:String str = String.valueOf(23);public interface Factory{Product createProduct();}public ...

    1、用new语句创建对象,这是最常见的创建对象的方法。

    Student student = new Student();

    2、通过工厂方法返回对象,如:String str = String.valueOf(23);

    public interface Factory{

    Product createProduct();

    }

    public class ConcreateFactory implements Factory{

    }

    public Product createProduct(){

    return new ConcreateProduct();

    }

    public class ConcreateProduct implements Product{}

    }

    public interface Product{}

    private Factory factory;

    public class Client{

    this.factory = factory;

    public Client(Factory factory){ }

    Product product = factory.createProduct();

    public void dosomething(){ }

    Client client = new Client(new ConcreateFactory());

    public static void main(String[] args){ client.dosomething(); }

    }

    3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();

    c1 = Class.forName('com.ghgj.reflect.Student');

    Student student3 = (Student)c1.newInstance();

    4、调用对象的clone()方法。Student student2 = (Student) student.clone()

    Student student2 = (Student) student.clone();

    5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

    ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream("C:/student.txt"));

    out.writeObject(student);

    out.close();

    ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/student.txt"));

    Student student4 = (Student)in.readObject();

    in.close();

    展开全文
  • java实例化对象的方式

    2021-02-12 12:44:31
    一、Java中创建(实例化)对象种方式 1、用new语句直接创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str = String.valueOf(23);3、运用反射手段,调用java.lang.Class或者java.lang....

    一、Java中创建(实例化)对象的五种方式  1、用new语句直接创建对象,这是最常见的创建对象的方法。

    2、通过工厂方法返回对象,如:String str = String.valueOf(23);

    3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();

    4、调用对象的clone()方法。

    5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

    二.实例说明:

    创建 Fruit(水果)实体类

    package com.shine.demo.object;

    import java.io.Serializable;

    @SuppressWarnings("serial")

    public class Fruit implements Serializable, Comparable{

    /**

    * id.

    */

    private Long id;

    /**

    * 名称.

    */

    private String name;

    /**

    * 价格.

    */

    private Double price;

    public Fruit() {

    super();

    }

    public Fruit(Long id, String name, Double price) {

    super();

    this.id = id;

    this.name = name;

    this.price = price;

    }

    public Long getId() {

    return id;

    }

    public void setId(Long id) {

    this.id = id;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public Double getPrice() {

    return price;

    }

    public void setPrice(Double price) {

    this.price = price;

    }

    @Override

    public String toString() {

    return "id为:" + this.getId() + ",的:"+ this.getName() +"的价格为:"+this.getPrice();

    }

    @Override

    public int compareTo(Fruit otherFruit) {

    if(!(this.id.equals(otherFruit.id)))

    return this.id.compareTo(otherFruit.id);

    else if(!(this.name.equals(otherFruit.name)))

    return this.name.compareTo(otherFruit.name);

    else if(this.price.equals(otherFruit.price))

    return this.price.compareTo(otherFruit.price);

    return 0;

    }

    @Override

    public int hashCode() {

    final int prime = 31;

    int result = 1;

    result = prime * result + ((id == null) ? 0 : id.hashCode());

    result = prime * result + ((name == null) ? 0 : name.hashCode());

    result = prime * result + ((price == null) ? 0 : price.hashCode());

    return result;

    }

    @Override

    public boolean equals(Object obj) {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (!(obj instanceof Fruit))

    return false;

    Fruit other = (Fruit) obj;

    return this.id.equals(other.id) && this.name.equals(other.name) && this.price.equals(other.price);

    }

    }

    测试说明 : 下面主要对1/3方式进行说明

    package com.shine.demo.object;

    public class ObjOpen {

    public static void main(String[] args) {

    /**方法一 : new语句直接创建对象 */

    Fruit fruit = new Fruit(1L,"苹果",4.3);

    System.out.println(fruit.toString());

    /**方法三 :运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

    * 如:Object obj = Class.forName("java.lang.Object").newInstance();

    **/

    try {

    Fruit fruit2 = (Fruit) Class.forName("com.shine.demo.object.Fruit").newInstance();

    fruit2.setId(2L);

    fruit2.setName("香蕉");

    fruit2.setPrice(2.6);

    System.out.println(fruit2);

    } catch (InstantiationException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    }

    }

    }

    三、结果:

    78125e7cfba6c200114599465bbff4b2.png

    展开全文
  • 这里一共整理了四种方法①用类的new ()创建②用clone方法创建, 需要类实现 Cloneable 接口③通过反射机制创建④将一个对象实例化后,进行序列化,再反序列化下面是实现代码1)用类的new ()创建User user = new User...

    这里一共整理了四种方法

    ①用类的new ()创建

    ②用clone方法创建, 需要类实现 Cloneable 接口

    ③通过反射机制创建

    ④将一个对象实例化后,进行序列化,再反序列化

    下面是实现代码

    73eadd85bd397fd677d5f34ef869cc3d.png

    1)用类的new ()创建

    User user = new User();

    2)用clone方法创建, 需要类实现 Cloneable 接口

    User user2 = (User) user1.clone();

    3)用 Class.forName方法获取类,在调用类的newinstance()方法

    Class> cls =null;

    User u = null;

    try {

    cls = Class.forName("com.dao.User");

    u = (User)cls.newInstance();

    } catch (ClassNotFoundException e1) {

    e1.printStackTrace();

    }

    4)将一个对象实例化后,进行序列化,再反序列化,也可以获得一个对象(远程通信的场景下使用)

    try{

    ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream("D:/objectUser.txt"));

    //序列化对象

    out.writeObject(user1); //"Kong zi", "13800010001", "Greatwalk"

    out.close();

    //反序列化对象

    ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/objectUser.txt"));

    User user4 = (User) in.readObject();

    System.out.println("反序列化user:" + user4);

    in.close();

    }

    catch(ClassNotFoundException e ){

    e.printStackTrace();

    }

    catch(FileNotFoundException e ){

    e.printStackTrace();

    }

    catch(IOException e ){

    e.printStackTrace();

    }

    展开全文
  • 对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了。下面我们通过两个例题来说明对象实例化过程。编译并运行该程序会有以下输出StaticBlockEmployeeCompany:chinasoftNon-...

    学习JAVA这门面向对象的语言,实质就是不断地创建类,并把类实例化为对象并调用方法。对于初学JAVA的人总搞清楚对象是如何实例化的,假如类之间存在继承关系,那就更糊涂了。下面我们通过两个例题来说明对象的实例化过程。

    58e3db6536d777daabc1ea57d74eb517.gif

    编译并运行该程序会有以下输出 Static Block Employee Company:china soft Non-Static Block Employee phone:0755-51595599 Employee(String) Empoloyee() 下面我们来对结果做分析: 1 在代码34行实例化对象时, 先对给静态变量分配内存空间并初始化,然后执行静态块。 因此,在这里会输出: Static Block Employee Company:china soft Employee Company:china soft的输出也说明是先初始化静态变量然后再执行静态块,否则company将为null。 2然后在内存中为Employee分配内存空间,并做默认初始化(即所有变量初始化为默认值,这里都初始化为null)。 3 默认初始化完成后,开始显示初始化。即执行第5行,将phone初始化"0755-51595599",并且执行非静态方法块;因此在这里会有以下输出: Non-Static Block Employee phone:0755-51595599 4 最后才调用默认构造函数,在默认构造函数中调用了带参数的构造函数,所以在这里先输出带参数构造函数中的:Employee(String),然后才输出:Empoloyee()。

    例2:

    84f4c89451cb82c57aa6c2191dde701d.gif

    上面的代码中Manager继承了前面写的Employee类,当我们编译并运行Manager类,会产生以下的输出:

    Static Block Employee Company:china soft Sub Static Block Manager department:sale Non-Static Block Employee phone:0755-51595599 Employee(String) Empoloyee() Sub Non-Static Block Manager salary:8000 Manager(String) Manager() 下面我们对结果做分析: 1 在行34实例化对象时,由于Manager继承了Employee,所以先从父类Employee开始;先给父类静态变量分配内存空间并初始化,然后执行父类静态块。然后再给子类静态变量分配内存空间并初始化,然后执行子类静态块,所以会得到以下输出: Static Block Employee Company:china soft Sub Static Block Manager department:sale

    2然后在内存中为父类Employee分配内存空间,并做默认初始化;再为子类Manager分配内存空间,并做默认初始化。 3默认初始化完成后,从父类开始显示初始化并执行非静态方法块和构造函数,然后再子类开始显示初始化并执行非静态方法块和构造函数。因此会产生以下的输出: Non-Static Block Employee phone:0755-51595599 Employee(String) Empoloyee() Sub Non-Static Block Manager salary:8000 Manager(String) Manager()

    总结以上内容,可以得到对象初始化过程:

    1、 如果存在继承关系,就先父类后子类;

    2 、如果在类内有静态变量和静态块,就先静态后非静态,最后才是构造函数;

    3 、继承关系中,必须要父类初始化完成后,才初始化子类。

    展开全文
  • Java对象实例化的过程

    2021-03-05 14:57:24
    1.先为对象分配空间,并按属性类型默认初始ps:八种基本数据类型,按照默认方式初始,其他数据类型默认为null2.父类属性的初始(包括代码块,和属性按照代码顺序进行初始)3.父类构造函数初始4.子类属性的...
  • 问:实例化对象构造方法的流程是怎么走的?我输入DrawIconicon=newDrawIcon(800,800);这段程序不是应该只会自动调用DrawIcon的构造方法吗?为何还会实现其他方法?为何输出结果是42312...问:实例化对象构造方法的...
  • 你需要指定一些工厂来创建T的实例。class MyClass {private final Supplier extends T> ctor;private T field;MyClass(Supplier extends T> ctor) {this.ctor = Objects.requireNonNull(ctor);...
  • Java反射实例化对象

    2021-01-09 17:02:51
    Java 反射实例化对象 1、通过反射实例化对象 首先要获取目标类的class对象,可以通过以下三种方法 2、getConstructors和getDeclaredConstructors的区别 3、getFields和getDeclaredFields的区别
  • Java实例化对象是什么意思

    千次阅读 2021-02-22 20:45:53
    Java语言中使用new关键字创建/构造对象的过程叫做类的实例化,该过程的本质,会在内存空间的堆区申请一块存储区域,用于记录该对象独有的成员变量信息。 通俗点就是,实例化:使用关键字new来创建对象。 例如: ...
  • 您的代码中没有Sample类.您声明的是私有方法.// private method which takes an int as parameter and returns another intprivate int Sample(int c...}使用当前代码段,您需要实例化Testing类并使用Sample方法.请注...
  • 1、实例化对象的过程可以分为两部分,例如下面代码:Person per = new Person();该代码分为两部分:第一,声明对象:Personper,这部分是在栈内存中声明的,与数组一样,数组名称及时保存在占内存之中,只是开闭了真内存...
  • 实例化这是为对象分配内存的时候.这就是新关键字正在做的事情.从new关键字返回对创建的对象的引用.初始化这是将值放入已分配的内存中的时间.这是使用new关键字时类的Constructor.还必须通过将对内存中某个对象的引用...
  • 使用场合:不知道具体要去实例化那个类的对象,通常这个参数由用户传入。即类名不确定!使用方法:ClassnewTraffic=Class.forName("Car");Traffict=(Traffic)newTraffic.newInstance();说明:1、newTraffic为定义的...
  • java泛型对象实例化

    2021-02-28 06:24:41
    实例化具有无参数构造函数的泛型对象//newInstance() method need constructor without parameter//Class come form Class.classpublic T getNewObject(Class cls) {T t=null;try {t = cls.newInstance();} catch ...
  • Java对象在内存中实例化的过程在讲 Java 对象在内存中的实例化过程前,先来说下在类的实例化过程中,内存会使用到的三个区域:栈区、堆区、方法区。堆区:存储的全部都是对象,每个对象包含了一个与之对应的 class ...
  • java对象实例化

    2021-08-06 20:43:28
    那么对象实例化具体又是一个怎样的过程呢?这篇就简单总结下: 1.对象实例化 对象创建的方式 new 最常见的方式 变形1:XXX的静态方法 变形2:xxxbuilder/xxxfactory的静态方法 class的newInstance():反射的...
  • 什么是java实例化

    千次阅读 2021-02-12 11:12:21
    java实例化就是使用new关键字创建一个对象的过程,例如“new Persion()”就代表实例化了一个Persion对象,其中Persion末尾的括号代表立即调用Persion类的构造函数来进行初始化的操作。,其实,它包含了四个动作。...
  • publicclassPersonDemo{publicstaticvoidmain(String[]args){Person[]persons=null;//声明对象数组persons[0]=new...//用构造方法实例化对象System.out.println(pers...public class PersonDemo {public static void...
  • 1.编写一个类并创建实例public class Student{ //创建类 private int age; //创建字段 private String name; public int getAge(){ return age;//获取年龄 } public void setAge(String age){ this...
  • public class Studernd4Test { public static void main(String[] args) { //实例化一个Studernd4对象 Studernd4 studernd4 = new Studernd4(); //创建一个Studernd4数组 Studernd4[] studernd = studernd4....
  • 队列是一个接口,这意味着你不能直接构造一个队列。最好的选择是构造一个已经实现Queue接口的类,例如下面的一个:AbstractQueue,ArrayBlockingQueue,ConcurrentLinkedQueue,DelayQueue,LinkedBlockingQueue,...
  • Class#newInstance方法已经被弃用了,从注释中可以看到推荐使用Constructor#newInstance方法生成实例,即直接通过构造方法生成实例:// getConstructor 方法入参是可变长参数列表,对应类中构造方法的入参类型,这里...
  • 现象开发中使用实体类创建对象时,报错:java.lang.InstantiationException: com.bjbde.pay.model.BdModel.BdMemberApiConfig实例化对象的代码public static T map2Bean(Map source, Class instance) {try {T object...
  • 我来自c ++背景,并且发现自己不断在java中执行此操作:SomeClass sc=new SomeClass();if(null!=sc){sc.doSomething();}我想知道的是,如果构造函数由于某种原因(例如内存不足)而失败,则变量sc中将包含什么。 我...
  • 我试图学习Singleton设计模式,我遇到了以下示例.但是,似乎我能够创建该类的多个实例....如何验证在任何给定时间只创建一个对象?public class ChocolateBoiler {private boolean empty;private boolean boiled;priv...
  • Java实例化对象时数据的存储示例代码图解误区 示例代码 以此代码进行存储过程的演示 public class Task_010201_1 { public static void main(String[] args) { // TODO 自动生成的方法存根 Car car = new Car...
  • JAVA对象实例化的方法New对象实例// 直接new对象实例Productor productor = new Productor();反射机制Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够...
  • 摘要:在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。...本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象...
  • 我正在学习Java泛型,我正在尝试调整我开发的一些代码作为练习.特别是,我开发了一个ArrayVisualizer类,它使用Sedgewick的StdDraw库来可视和动画动态数组的行为.我有自己的动态数组类,它支持泛型,我试图将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 987,062
精华内容 394,824
关键字:

java实例化对象五

java 订阅