Java 基础(二)

来源:互联网 发布:网络用语cdz什么意思 编辑:程序博客网 时间:2024/05/15 23:46

1、 通过反射获得Class对象,默认构造函数

public static Object getClassObject(String className) {    Object obj = null;     //获得Class对象    Class<?> clazz = Class.forName(className);    //如果不为Null, 则创建对象实例    if (clazz != null) {        obj = clazz.newInstance();    }    return obj;}

2、类(对象)的clone方法
clone分为浅层复制和深层复制。浅层复制: 如果是基础类型,则直接复制,如果是对象,则只复制对象的引用,堆内存中未重新开辟空间。深层复制:重新开辟内存,内存与复制的对象内容一致。

clone代码:
注: 需要implements clonable,以及override clone方法

// 此处是浅层复制public class A implements Clonable {    private int temp = 0; // 基础对象    @Override    public Object clone() {        A a = null;        try{            a = (A)super.clone();        } catch(CloneNotSupportedException e) {            e.printStackTrace();        }        return a;    }}//深层复制public class A implements Clonable {    private B b;    private List<C> clist;//  ...(get & set method)    @override    public void clone() {        A a = new A();        a.setB(b.clone());        List<C> list = new ArrayList<C>();        for (C c : clist) {            list.add(c.clone());            }        a.setCList(list);    }    class B implement Clone() {        public void clone(){}    }    class C implement Clone() {        public void clone(){}    }}

3、 Collections.copy用法
在对两个list进行复制的时候,采用collections.copy方法,会提示 数组越界,查看源码,发现是因为dst数组的size 小于 src的size.

List<String> src = ....List<String> dst = new ArrayList(Arrays.asList(new Object[src.size]));Collections.copy(dst, src);//注:  如果list内部的对象不是基础类型,那么就只能用for循环来实现了for (int i = 0; i < lista.size(); i++ ) {    listb.add(lista.get(i).clone());}

4、创建文件和创建目录

// 循环创建文件public void createFile(File file) {    do {        try {            file.createNewFile();        } catch (IOException e) {            e.printStackTrace();        }    } while (!file.exist());}// 循环创建目录public void createDirectory(File file) {    do {        file.mkdir();    } while (!file.exist());}
0 0
原创粉丝点击