Hutool学习

hutool

克隆

package com.june;

import cn.hutool.core.clone.CloneRuntimeException;
import cn.hutool.core.clone.CloneSupport;
import cn.hutool.core.clone.Cloneable;
import cn.hutool.core.util.ObjectUtil;

import java.io.Serializable;

/**
 * hutool的克隆方法
 */
public class HutoolClone {
    public static void main(String[] args) {
        Dog dog = new Dog("旺财",2);

        Dog dog2 = ObjectUtil.clone(dog);
        //用这个方法需要实现Serializable接口
        //深克隆
        //浅克隆不会克隆原对象中的引用类型,仅仅拷贝了引用类型的指向。
        Dog dog4 = ObjectUtil.cloneByStream(dog2);
        Dog dog3 = (Dog) dog.clone();
        System.out.println(dog);
        System.out.println(dog2);
        System.out.println(dog3);
        System.out.println(dog4);
        Cat cat = new Cat("june",2);
        Cat clone = cat.clone();
        System.out.println(clone);

    }
}
class Dog extends CloneSupport implements Serializable {
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Dog() {
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
class Cat implements Cloneable<Cat> {
    private String name;
    private int age;

    public Cat() {
    }

    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public Cat clone() {
        try {
            return (Cat) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new CloneRuntimeException(e);
        }
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

需要克隆的对象 可以通过继承CloneSupport 类就能拥有clone()方法,可通过需要克隆的对象直接调用方法。

Dog dog = new Dog("旺财",2);
Dog dog3 = (Dog) dog.clone();
System.out.println(dog3);

结果截图
在这里插入图片描述

需要克隆的类也可以通过实现Cloneable接口获得clone()方法
另外ObejectUtil也提供clone(Object obj),cloneByStream(Object)

clone(Object obj),cloneByStream(Object)的区别
clone是浅克隆,cloneByStream是深克隆
clone不需要实现Serializable 接口
浅克隆不会克隆原对象中的引用类型,仅仅拷贝了引用类型的指向(应用类型地址复制给克隆对象)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hutool-db是一个在JDBC基础上封装的数据库操作工具类,它使用了ActiveRecord思想来操作数据库。通过使用Entity代替Bean,Hutool-db使得数据库操作更加灵活,并提供了Bean和Entity的转换来兼容传统ORM。你可以在Hutool官方网站(https://www.hutool.cn)和官方参考文档(https://www.hutool.cn/docs)中了解更多关于Hutool-db的详细信息。具体到数据库查询in的问题上,你可以使用Hutool-db提供的Entity构造where条件的方法来实现。这样的查询会使用PreparedStatement,避免了SQL注入的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Hutool学习 —— 数据库 - db (一)Db简单操作](https://blog.csdn.net/waiter_chen/article/details/118329567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [数据库(Hutool-db)](https://blog.csdn.net/weixin_45049746/article/details/131322347)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值