当前位置:   article > 正文

五种创建Java对象的方法,你知道几种呢?_java创建对象

java创建对象
关注“Java架构栈”微信公众号,回复暗号【Java面试题】即可获取大厂面试题

最近有小伙伴出去面试,被面试官问到了 “Java创建对象有哪些方式” 这个问题。这个小伙伴自然就非常迅速地说出了new的方式,结果面试官又继续追问还有哪些别的方式,他就支支吾吾半天不知道了。那么这个问题到底难不难呢?今天波哥就来给大家总结一下Java中创建对象的方式都有哪些,速来围观吧。

 创建对象的方式

1.new关键字

对于这种方式,想必大家肯定都非常熟悉,我们可以直接通过new关键字去创建一个对象,通过这个方法我们可以去调用无参构造器或者有参构造器,实例代码如下:

  1. public class Test {
  2.     public static void main(String[] args) {
  3.         User user1 = new User();
  4.         User user2 = new User("张三""123456");
  5.     }
  6.  }

2. 反序列化

如果我们想要反序列化创建一个对象,必须先将这个对象给序列化。那什么是序列化呢?说白了就是将Java对象转化为字节流或者字符流的过程。而反序列化则是将字节流或者字符流对象转化为Java对象的过程。

一个还没序列化的文件就是空的,如下图所示:

  1. public class Test {
  2.     public static void main(String[] args) throws Exception {
  3.         ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("D:\\Test\\userFile.txt"));
  4.         User user = new User("张三","123456");
  5.         objectOutputStream.writeObject(user);
  6.         objectOutputStream.close();
  7.     }
  8. }

而当我们运行了上面的代码后,在userFile.txt中就会出现以下的东西:

此时如果我们再来执行以下代码:

  1. public class Test {
  2.     public static void main(String[] args) throws Exception {
  3.         ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("D:\\Test01\\userFile.txt"));
  4.         User user = (User) objectInputStream.readObject();
  5.         System.out.println(user.username()+","+user.password());
  6.         objectInputStream.close();
  7.     }
  8. }

就可以得到以下内容:

由此我们就可以知道,这个User对象就是从之前的userFile.txt文件中获取到的。

3. 调用newInstance方法

在class类中有一个newInstance方法,该方法会调用类中公开的无参构造方法,当我们利用该方法创建对象时,实例代码如下:

  1. public class Test {
  2.     public static void main(String[] args) throws Exception {
  3.         User user = (User) Class.forName("User").newInstance();
  4.     }
  5. }

4. Constructor.newInstance

另外在Constructor类中,也有一个newInstance方法帮助我们来创造对象,通过这个方法我们可以调用有参的构造或私有的构造方法,示例代码如下:

  1. public class Test {
  2.     public static void main(String[] args) throws Exception {
  3.         Constructor<User> userConstructor = User.class.getConstructor();
  4.         User user = userConstructor.newInstance();
  5.     }
  6. }

5. Clone方法

最后我们还可以使用clone()方法创建一个新对象。但是大家要注意,使用该方法的前提是,我们必须先让类实现Cloneable接口,并重写Object的clone方法(因为Object中的这个方法是protected的,若不重写,外部也调用不了)。实例代码如下:

  1. public class User  implements Cloneable{
  2.     @Override
  3.     public User clone() throws CloneNotSupportedException {
  4.         return (User) super.clone();
  5.    }
  6. }
  7. public class Test {
  8.     public static void main(String[] args) throws Exception {
  9.         User user1 = new User();
  10.         User user2 = user1.clone();
  11.     }
  12. }

 结语

以上就是波哥为小伙伴们介绍的五种创建对象的方法,现在你知道都有哪些创建Java对象的方式了吗?以后如果面试官再问你Java中创建对象的方式,你就可以把这些方式告诉他哦。关注Java架构栈,干货天天都不断!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/857159
推荐阅读
相关标签
  

闽ICP备14008679号