首页 > 编程语言 >【Java】创建对象的几种方式

【Java】创建对象的几种方式

时间:2024-05-11 15:12:01浏览次数:27  
标签:obj1 Java String 创建对象 value 几种 MyClass public out

1.new创建新的对象

String str = new String("str");

2.通过Java的反射机制

public static void main(String[] args) throws Exception {
        // 获取类的Class对象
       String str = (String)Class.forName("java.lang.String").newInstance();
    System.out.println(str); 
}

3.通过clone机制(克隆机制)

复制代码
=========================Myclass.java===========================================
public class MyClass implements Cloneable { private int value; public MyClass(int value) { this.value = value; } public int getValue() { return value; } @Override public MyClass clone() throws CloneNotSupportedException { return (MyClass) super.clone(); } } ===========================Main.java============================================= public class Main { public static void main(String[] args) throws CloneNotSupportedException { MyClass obj1 = new MyClass(10); MyClass obj2 = obj1.clone(); System.out.println(obj1.getValue()); // 输出:10 System.out.println(obj2.getValue()); // 输出:10 } }
复制代码

4.通过序列化机制

  通过序列化机制来创建新的对象。序列化是将对象转换为字节流的过程,以便可以将其存储在磁盘上或通过网络传输。反序列化则是将字节流转换回对象的过程。

复制代码
===================================================================================================
import java.io.*;

public class MyClass implements Serializable {
    private int value;
public MyClass(int value) { this.value = value; } public int getValue() { return value; } private void writeObject(ObjectOutputStream out) throws IOException { out.writeInt(value * 2); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { value = in.readInt(); } } =================================================================================================== public class Main { public static void main(String[] args) throws IOException, ClassNotFoundException { MyClass obj1 = new MyClass(10); FileOutputStream fileOut = new FileOutputStream("obj1.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(obj1); out.close(); fileOut.close(); FileInputStream fileIn = new FileInputStream("obj1.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); MyClass obj2 = (MyClass) in.readObject(); in.close(); fileIn.close(); System.out.println(obj1.getValue()); // 输出:10 System.out.println(obj2.getValue()); // 输出:20 } }
复制代码

 

5、构造函数对象的newInstance()方法

类Constructor也有newInstance方法,这一点和Class有点像。从它的名字可以看出它与Class的不同,Class是通过类来创建对象,而Constructor则是通过构造器。依然使用第一个例子中的Test类。

复制代码
public static void main(String[] args) throws Exception {
    Constructor<Test> constructor;
   try {
        constructor = Test.class.getConstructor();
       Test t = constructor.newInstance();
   } catch (InstantiationException |
        IllegalAccessException |
        IllegalArgumentException |
        InvocationTargetException |
        NoSuchMethodException |
        SecurityException e) {
        e.printStackTrace();
   }
}
复制代码

标签:obj1,Java,String,创建对象,value,几种,MyClass,public,out
From: https://www.cnblogs.com/zzsuje/p/18186518

相关文章

  • C#实现十进制数转换为十六进制的几种方式
      在C#中,十进制和十六进制转换非常简单,本文给大家介绍了C#实现十进制数转换为十六进制的几种方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下 −目录方法一:使用 ToString() 方法方法二:使用 Convert.ToString() 方法方......
  • 【Java】的四种引用类型
    (一)强引用Java强引用最常见,就是把一个对象赋给一个引用变量,这个引用变量就是强引用,但一个对象被强引用时,它处于可达状态,不会被垃圾回收装置回收,因此强引用是造成内存泄漏的主要原因之一。Strings=newString("ABC");(2)软引用软引用需要SoftReference类来实现,对于只有软引......
  • Java开发利器Commons Lang之元组Tuple
    标准Java库没有提供足够的方法来操作其核心类,ApacheCommonsLang提供了这些额外的方法。ApacheCommonsLang为java提供了大量的帮助工具。langAPI,特别是String操作方法、基本数值方法、对象反射、并发、创建和序列化以及System属性。此外,它还包含对java.util.Date的基本增......
  • [附源码+文档]Java Swing小游戏源码合集(14款)_毕业设计必选项目
    (小众游戏塔防迷宫动作剧情类等)16款游戏源码Javaswing五子棋联网版源代码Javaswing贪吃蛇游戏开发教程+源码Javaswing超级玛丽游戏Javaswing俄罗斯方块项目源码Javaswing飞机大战游戏源码Javaswing雷电游戏源码Javaswing连连看游戏源码Javaswing模拟写字板源码......
  • Java异常处理的最佳实践
      本文是关于Exception处理的一篇不错的文章,从JavaException的概念介绍起,依次讲解了Exception的类型(Checked/Unchecked),Exception处理的最佳实现:选择Checked还是Unchecked的几个经典依据Exception的封装问题如无必要不要创建自己的Exception不要用Excepti......
  • Java拦截器(Interceptor)详细解析
    转载链接地址:https://www.cnblogs.com/xiaoyh/p/16444681.html一、拦截器概念讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器(2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源(3)如果是静态资源,会直接到Tomcat......
  • 基于spring boot Java的数组转树状结构类
    基于springboot的数组转树状结构类importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.List;importjava.util.function.Function;publicclassArray{private<E,V>VcreateViewObject(Eentity,Class<V>viewObjectClass)thro......
  • java常用加密手段
    虽然一般都会给APK上壳。但是拖壳还是要分析JAVa链接:https://pan.baidu.com/s/1Qm0cF0u7RCGy174QYeVf2Q?pwd=c60g提取码:c60g1.隐藏字节-将明文字符串->转为字节定义publicstaticvoidmain(String[]args)throwsIOException{Stringstrq=newString(newbyte[]{97,......
  • 第一个JAVA代码
    第一个JAVA代码创建存放代码的文件夹在合适的路径中新建存放代码的文件夹。新建一个Java文件1.新建一个文件2.文件名为HelloWorld3.将后缀改为.java输入代码使用notepad++打开新建的文件,输入以下代码并保存publicclassHelloWorld{ publicstaticvoidmain(String[]a......
  • Java面试题:Spring Bean线程安全?别担心,只要你不写并发代码就好了!
    Spring中的Bean是否线程安全取决于Bean的作用域(scope)。Spring提供了几种不同的Scope,其中包括Singleton、Prototype、Request、Session、GlobalSession等。 SingletonScope(单例模式)默认情况下,SpringBean是SingletonScope,这意味着在整个应用程序上下文中只有一个实例。......