1. java复制粘贴代码
实现深拷贝,有三种方式:
手动赋值,效率高,但代码过于啰嗦。
序列化与反序列化,使用SerializationUtils的clone(Object obj)方法,要求拷贝的对象实现了Serializable,Map不行,使用HashMap即可。
用fastjson从Object转成json,然后转回object,本质上是反射。
2. java复制到粘帖板
CTRL+C复制 CTRL+V粘贴 或者选中代码,右键,COPY 要粘贴的地方,右键,P开头那个
3. java怎么复制代码
/**定义用户**/
public class User {
private String name;
private Address address;
// constructors, getters and setters
}
/**地址**/
public class Address {
private String city;
private String country;
// constructors, getters and setters
}
重载clone()方法
Object父类有个clone()的拷贝方法,不过它是protected类型的,
我们需要重写它并修改为public类型。
除此之外,子类还需要实现Cloneable接口来告诉JVM这个类是可以拷贝的。
重写代码
让我们修改一下User类,Address类,实现Cloneable接口,使其支持深拷贝。
/**
* 地址
*/
public class Address implements Cloneable {
private String city;
private String country;
// constructors, getters and setters
@Override
public Address clone() throws CloneNotSupportedException {
return (Address) super.clone();
}
}
/**
* 用户
*/
public class User implements Cloneable {
private String name;
private Address address;
// constructors, getters and setters
@Override
public User clone() throws CloneNotSupportedException {
User user = (User) super.clone();
user.setAddress(this.address.clone());
return user;
}
}
需要注意的是,super.clone()其实是浅拷贝,
所以在重写User类的clone()方法时,address对象需要调用address.clone()重新赋值。
扩展:
为什么要克隆?
大家先思考一个问题,为什么需要克隆对象?直接new一个对象不行吗?
答案是:克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠clone方法了。那么我把这个对象的临时属性一个一个的赋值给我新new的对象不也行嘛?可以是可以,但是一来麻烦不说,二来,大家通过上面的源码都发现了clone是一个native方法,就是快啊,在底层实现的。
提个醒,我们常见的Object a=new Object();Object b;b=a;这种形式的代码复制的是引用,即对象在内存中的地址,a和b对象仍然指向了同一个对象。
而通过clone方法赋值的对象跟原来的对象时同时独立存在的。
4. java 复制
方法很多:
1、
可以使用360安全浏览器,在浏览器的右上角有“下载”,点击会弹出一个下载窗口,你能找到“新建”按钮,点击新建,弹出一个小框,这样把URL地址复制粘贴到里面,点击确定,就可以下载了。。
2、URL地址连接的地方,右键,弹出一个属性,里面“目标另存为”,点击它可以保存到自己电脑上了。
3、用迅雷软件,通过“新建”来下载。跟方案1相似。
5. java怎么粘贴
参考代码如下:
import java.io.*
; /** * 复制文件夹或文件夹 */ public class CopyDirectory { // 源文件夹 static String url1 = "f:/photos"
; // 目标文件夹 static String url2 = "d:/tempPhotos"
; public static void main(String args[]) throws IOException { // 创建目标文件夹 (new File(url2)).mkdirs()
; // 获取源文件夹当前下的文件或目录 File[] file = (new File(url1)).listFiles()
; for (int i = 0; i
- 相关评论
- 我要评论
-