JAVA类,只要知道了类名(全名)就可以创建其实例对象,通用的方法是直接使用该类提供的构造方法,如

NewObject o = new NewObject();

NewObject o = new NewObject("test");

NewObject o = new NewObject(new String[]{"aaa","bbb"});

除此之外,还可以利用java.lang.Class<T>类来实现JAVA类的实例化。

1、空构造方法

如果类有空构造方法,如下面的类

public class NewObject
{
 String name;
 
 public NewObject(String[] name)
 {
  this.name = name[0];

System.out.println(“ the object is created!”);
 }
 
 public void write()
 {
  System.out.println(this.name);
 }
}

使用以下代码可实现实例化:

NewObject no = null;
 try
   {
    no = (NewObject)Class.forName(className).newInstance();

no.write();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }

2、带参数构造方法

public class NewObject
{
 String name;
 
 public NewObject()
 {

System.out.println(“ the object is created!”);
 }
 
 public void write()
 {
  System.out.println(“”);
 }
}

使用以下代码可实现实例化:

try
   {
    no = (NewObject)Class.forName(className).getConstructor(String.class).newInstance(names);

//no = (NewObject)Class.forName(className).getConstructor(new Object[]{String.class}).newInstance(names);
   }
   catch (IllegalArgumentException e)
   {
    e.printStackTrace();
   }
   catch (SecurityException e)
   {
    e.printStackTrace();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (InvocationTargetException e)
   {
    e.printStackTrace();
   }
   catch (NoSuchMethodException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }

3、带数组参数构造方法

public class NewObject
{
 String name;
 
 public NewObject(String name)
 {
  this.name = name;

System.out.println(“ the object is created!”);
 }
 
 public void write()
 {
  System.out.println(this.name);    
 }
}

使用以下代码可实现实例化:

try
   {
    Constructor[] cs;
    cs = Class.forName(className).getConstructors();
    Constructor cc = Class.forName(className).getConstructor(String[].class);
    no = (NewObject)cc.newInstance(new Object[]{names});
   }
   catch (SecurityException e)
   {
    e.printStackTrace();
   }
   catch (ClassNotFoundException e)
   {
    e.printStackTrace();
   }
   catch (NoSuchMethodException e)
   {
    e.printStackTrace();
   }
   catch (IllegalArgumentException e)
   {
    e.printStackTrace();
   }
   catch (InstantiationException e)
   {
    e.printStackTrace();
   }
   catch (IllegalAccessException e)
   {
    e.printStackTrace();
   }
   catch (InvocationTargetException e)
   {
    e.printStackTrace();
   }

java对象实例化的更多相关文章

  1. JAVA对象实例化方式总结

    JAVA对象实例化的方法 New对象实例 // 直接new对象实例 Productor productor = new Productor(); 反射机制 Java反射机制是在运行状态中,对于任意一个 ...

  2. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...

  3. Java对象实例化的过程

    1.先为对象分配空间,并按属性类型默认初始化 ps:八种基本数据类型,按照默认方式初始化,其他数据类型默认为null 2.父类属性的初始化(包括代码块,和属性按照代码顺序进行初始化) 3.父类构造函数 ...

  4. java对象实例化 静态块,对象块,构造函数执行顺序

    public class TestA { public static void main(String []args) { new B(); } } class A { static { System ...

  5. 深入理解Java对象的创建过程:类的初始化与实例化

    摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...

  6. Java学习点滴——对象实例化

    基于<Java编程思想>第四版 构造与析构 在C++中通过构造函数和析构函数来保证:对象在使用前被正确初始化,在使用后被正确回收.Java中同样存在构造函数,但是没有析构函数.之所以没有析 ...

  7. Java 子类实例化对象的过程

    子类实例化是否会实例化父类? 不会.父类在子类实例化过程中是并没有被实例化,java中new子类没有实例化父类,只是调用父类的构造方法初始化了,子类从父类继承来的属性,这个调用是子类的对象调用的父类的 ...

  8. 深入学习Java对象创建的过程:类的初始化与实例化

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完 ...

  9. java 子类对象实例化的过程

    大家往往听说  子类继承了父类就有了父类中的所有的非私有的属性,但是怎么就有了父类的属性了呢 ?且听下面分解 子类对象实例化的过程: 1 从结果上来看:(继承性) 子类继承了父类以后 就获取了父类中声 ...

随机推荐

  1. hdu 5545 The Battle of Guandu spfa最短路

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5545 题意:有N个村庄, M 个战场: $ 1 <=N,M <= 10^5 $; 其中曹 ...

  2. linux终端io笔记

    简介 终端的两种工作模式:以行为单位的工作模式,以字符数或时间为单位自定义模式 终端判断函数: int isatty(int fd) 终端属性的获取与设置: int tcgetattr(int fd, ...

  3. Uploadify 3.2 上传图片

    uploadify version: uploadify 3.2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  4. Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player

    安装方法Ubuntu 14.04及衍生版本用户命令: 因为默认库里面有Chromium和Pepper Flash Player,安装非常容易,打开终端,输入以下命令: sudo apt-get upd ...

  5. 微软职位内部推荐-Software Development Engineer II

    微软近期Open的职位: Job Title:Software Development EngineerII Division: Server & Tools Business - Comme ...

  6. iOS xcode 8 注释快捷键

    单行注释:在方法的地方按 Command+/ 标注的功能,快捷键是Command + Option + / 需要在方法名的上面(空白)的地方按 Command + Option + /      才管 ...

  7. DRLSE 水平集算法总结

    背景: Level Set方法是美国数学家Osher(加州大学洛杉矶分校)和Sethian(加州大学伯克利分校)合作提出的.后者因为对Level Set的贡献获得了去年美国数学会与工业应用数学会联合颁 ...

  8. [转载+原创]Emgu CV on C# (三) —— Emgu CV on 均衡化

    本文简要描述了均衡化原理及数学实现等理论问题,最终利用emgucv实现图像的灰度均衡. 直方图的均衡化,这是图像增强的常用方法. 一.均衡化原理及数学实现(转载) 均衡化原理及数学实现可重点参看——& ...

  9. 2208: [Jsoi2010]连通数 - BZOJ

    Description Input 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. Output 输出一行一个整数,表示该图 ...

  10. 2186: [Sdoi2008]沙拉公主的困惑 - BZOJ

    Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...