网站首页 > 精选教程 正文
实例化对象,都不陌生。大家?知道?几种?呢??
接下来就温习下对象实例化的7种方式:
- 1、用new语句创建对象
Test test = new Test();
- 2、用对象的clone()方法。需要实现Cloneable,并重写clone方法。
// 1、实现Cloneable接口
public class Test implements Cloneable{
private int a;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
// 2、重写clone方法
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Test test = new Test();
// 3、从一个对象中clone一个新的对象
Test test2 = (Test) test1.clone();
- 3、用Class静态方法 Class.forName
Class<?> calzz = Class.forName("org.test.Test");
Test test3 = (Test) calzz.newInstance();
- 4、使用ClassLoader实例的.loadClass
// 获取classload 可以通过:1、Xxx.class.getClassLoader();
// 也可用2、 Thread.currentThread().getContextClassLoader();
// 或者 3、ClassLoader.getSystemClassLoader();
ClassLoader cl = Main.class.getClassLoader();
Class<?> cls = cl.loadClass("org.test.Test");
Test test4 = (Test) cls.newInstance();
- 5、使用Constructor类的newInstance方法
Constructor<Test> constructor = Test.class.getConstructor();
Test test5 = constructor.newInstance(null);
- 6、使用反序列化
除了采用jdk的序列化和反序列化,也可以通过第三方工具转为xml,json等进行
// 实现Serializable接口
public class Test implements Serializable {
private int a;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
// 1、序列化
FileOutputStream fileOutputStream = new FileOutputStream("temp");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(test1);
fileOutputStream.close();
// 2、反序列化
FileInputStream fileInputStream = new FileInputStream("temp");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Test test6 = (Test) objectInputStream.readObject();
- 7、使用JavaBeans的BeanContext实例化
BeanContext beanContext = new BeanContextSupport();
Test test7 = (Test) beanContext.instantiateChild("org.test.Test");
以上就是Java对象实例化的7种方式,还有其他方式,欢迎评论区见。
猜你喜欢
- 2024-12-26 Mybatis配置文件XML全貌详解,再不懂我也没招了
- 2024-12-26 【预警通报】关于Xstream存在多个高危漏洞的预警通报
- 2024-12-26 一文了解 Maven 的 settings.xml 配置文件
- 2024-12-26 MyBatis 入门教程-配置MyBatis XML映射文件
- 2024-12-26 MyBatis-XML配置教程,这也太详细了吧
- 2024-12-26 Java对接微信、支付宝、银联第三方支付
- 2024-12-26 JAVA导出EXCEL表格
- 2024-12-26 Java对象的序列化与反序列化
- 2024-12-26 5、请介绍一下 XMLHTTPrequest 对象及常用方法和属性(必 会)
- 2024-12-26 第9天 | 鸿蒙App开发实战,XML创建布局,共性很重要
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)