java怎么创建对象和使用对象在同一个项目不同文件中,java怎样创建对象

  java怎么创建对象和使用对象在同一个项目不同文件中,java怎样创建对象

  如何解决写爬虫IP受阻的问题?立即使用。

  本教程运行环境:windows7系统,java8版本8,DELL G3电脑。

  作为Java开发人员,我们每天都要创建许多对象,但我们通常使用依赖管理系统(如Spring)来创建对象。然而,有许多方法可以创建对象,我们将在本文中学习。

  在Java中有五种创建对象的方法。下面是它们和它们的字节码的例子。

  Ken0@166.com,如果你在最后运行程序,你会发现方法1,2,3用构造函数创建对象,方法4,5不调用构造函数。

  

1.使用new关键字

  这是创建对象的最常见和最简单的方法。这样我们就可以调用任意的构造函数(无参数和无参数)。

  雇员emp1=新雇员();

  0:新#19 //班级组织/编程/Mitra/练习/员工

  3: dup

  4:invoke special # 21//method org/programming/Mitra/exercises/employee。:()v:

2.使用Class类的newInstance方法

  我们还可以使用Class的newInstance方法来创建对象。这个newInstance方法调用无参数构造函数来创建一个对象。

  我们可以通过以下方式调用newInstance方法来创建对象:

  Employee EMP 2=(Employee)class . forname( org . programming . Mitra . exercises . Employee )。new instance();

  或者

  employee EMP 2=employee . class . new instance();

  51: invokevirtual #70 //方法Java/lang/class . new instance:()Ljava/lang/Object;

3.使用Constructor类的newInstance方法

  非常类似于该类的newInstance方法。java.lang.reflect.Constructor类中还有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用参数化的和私有的构造函数。

  ConstructorEmployee constructor=employee . class . get constructor();

  员工EMP 3=constructor . new instance();

  111: invokevirtual #80 //方法Java/lang/reflect/constructor . new instance:([Ljava/lang/Object;)Ljava/lang/Object;这两个新实例方法就是我们所说的反射。实际上,类的newInstance方法在内部调用构造函数的newInstance方法。这也是为什么很多框架,比如Spring,Hibernate,Struts,都使用后者的原因。要理解这两种newInstance方法之间的区别,请参阅本文《通过Java中的反射创建对象及示例》。

  

4.使用clone方法

  每当我们调用对象的clone方法时,jvm都会创建一个新的对象,并复制以前对象的所有内容。用clone方法创建对象不会调用任何构造函数。

  要使用clone方法,我们需要实现Cloneable接口及其定义的clone方法。

  雇员emp4=(雇员)EMP 3 . clone();

  162:invokevirtual # 87//Method org/programming/Mitra/exercises/employee . clone()Ljava/lang/Object;

5.使用反序列化

  当我们序列化和反序列化一个对象时,jvm会为我们创建一个单独的对象。反序列化时,jvm创建对象而不调用任何构造函数。

  为了反序列化一个对象,我们需要让我们的类实现Serializable接口。

  ObjectInputStream in=new ObjectInputStream(new file inputstream( data . obj ));

  雇员emp5=(雇员)in . read object();

  261: invokevirtual #118 //方法Java/io/objectinputstream . read Object:()Ljava/lang/Object;从上面的字节码片段中我们可以看到,除了第一个方法,其他四个方法都转换成了invokevirtual(直接创建对象的方法),第一个方法转换成了两个调用,new和invokespecial(构造函数调用)。

  

例子

  让我们看看如何为以下Employee类创建一个对象:

  类Employee实现可克隆的、可序列化的{

  private static final long serialVersionUID=1L;

  私有字符串名称;

  公职人员(){

  System.out.println(调用了雇员构造函数.);

  }

  公共字符串getName() {

  返回名称;

  }

  public void setName(字符串名){

  this.name=name

  }

  @覆盖

  public int hashCode() {

  final int prime=31

  int result=1;

  result=prime * result((name==null)?0:名称。hashcode());

  返回结果;

  }

  @覆盖

  公共布尔等于(对象对象){

  如果(这==obj)

  返回真实的

  if (obj==null)

  返回错误的

  if (getClass()!=obj.getClass())

  返回错误的

  员工其他=(员工)对象;

  if (name==null) {

  if (other.name!=空)

  返回错误的

  } else if(!名称.等于(其他。姓名))

  返回错误的

  返回真实的

  }

  @覆盖

  公共字符串toString() {

  返回"雇员[name= name ]";

  }

  @覆盖

  公共对象克隆(){

  对象obj=null

  尝试{

  obj=超级。clone();

  } catch(CloneNotSupportedException e){

  e。printstacktrace();

  }

  返回目标文件

  }

  }下面的爪哇程序中,我们将用5种方式创建雇员对象。你可以从开源代码库找到这些代码。

  公共类对象创建{

  公共静态空总管(字符串.参数)引发异常{

  //通过使用新的关键字

  雇员emp1=新雇员();

  电磁脉冲1。集合名称( Naresh );

  System.out.println(emp1),hashcode: EMP 1。hashcode());

  //通过使用班级类的新实例()方法

  雇员EMP 2=(雇员)类。forname( org。编程。米特拉。练习。员工’)。新实例();

  //或者我们可以简单地这样做

  //雇员EMP 2=雇员。班级。新实例();

  电磁脉冲2。集合名称( Rishi );

  System.out.println(emp2),hashcode: EMP 2。hashcode());

  //通过使用构造函数类的新实例()方法

  ConstructorEmployee构造者=雇员。班级。get构造函数();

  员工EMP 3=构造函数。新实例();

  电磁脉冲3。集合名称(“Yogesh”);

  System.out.println(emp3),hashcode: EMP 3。hashcode());

  //通过使用克隆()方法

  雇员emp4=(雇员)EMP 3。clone();

  电磁脉冲4。集合名称(“Atul”);

  System.out.println(emp4),hashcode: EMP 4。hashcode());

  //通过使用反序列化

  //序列化

  对象输出流out=新对象输出流(新文件输出流(数据。obj’);

  出去。writeobject(EMP 4);

  出去。close();

  //反序列化

  ObjectInputStream in=new ObjectInputStream(new file inputstream( data。obj ));

  雇员emp5=(雇员)在。read object();

  英寸close();

  电磁脉冲5。集合名称(“Akash”);

  System.out.println(emp5),hashcode: EMP 5。hashcode());

  }

  }程序会输出:

  调用了员工构造函数.

  员工[name=Naresh],哈希码:-1968815046

  调用了员工构造函数.

  员工[name=Rishi],哈希码:78970652

  调用了员工构造函数.

  员工[name=Yogesh],哈希码:-1641292792

  员工[name=Atul],哈希码:2051657

  员工[name=Akash],哈希码:63313419相关视频教程推荐:Java视频教程以上就是爪哇岛怎么创建对象的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: