`
tangkuo
  • 浏览: 100977 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Utils加解密操作反射 空值判断功能

 
阅读更多
package com.kame.micropay.commons.util;

import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Utils {

/**
* 加解密操作集合对象.
* @param objs
* @param flag (flag:true 加密,false:解密.)
* @param attribute
*/
public static void desDecryptOrEncryptObjectList(List<?> objs, Boolean flag,String... attribute){
if (null != objs && !objs.isEmpty()) {
for (int i = 0; i < objs.size(); i++) {
desDecryptOrEncryptObject(objs.get(i),flag,attribute);
}
}
}

/**
* 对象加解密操作
* @param obj
* @param flag (true 加密,false:解密.)
* @param attribute
*/
public static void desDecryptOrEncryptObject(Object obj,Boolean flag,String... attribute) {
if (null != obj && null != attribute) {
for (int j = 0; j < attribute.length; j++) {
try {
Field f = obj.getClass().getDeclaredField(attribute[j]);
f.setAccessible(true);
if (flag) f.set(obj,DESUtil.desEncrypt(f.get(obj) == null ? "": f.get(obj).toString()));
  f.set(obj,DESUtil.desDecrypt(f.get(obj) == null ? "": f.get(obj).toString()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

/** 可以用于判断Object,String,Map,Collection,String,Array是否为空 */
    public static boolean isNull(Object value) {
        if (value == null) {
            return true;
        } else if(value instanceof String){
            if(((String)value).trim().replaceAll("\\s", "").equals("")){
                return true;
            }
        }else if(value instanceof Collection) {
            if(((Collection)value).isEmpty()){
                return true;
            }
        } else if (value instanceof Object[]) {
            Object[] object = (Object[]) value;
            if (object.length == 0) {
                return true;
            }
            boolean empty = true;
            for (int i = 0; i < object.length; i++) {
                if (!isNull(object[i])) {
                    empty = false;
                    break;
                }
            }
            return empty;
        } else if(value.getClass().isArray()) {
            if(Array.getLength(value) == 0){
                return true;
            }
        } else if(value instanceof Map) {
            if(((Map)value).isEmpty()){
                return true;
            }
        } else {
            return false;
        }
        return false;

    }



    public static boolean isNull(Object value, Object... items){
        if (isNull(value) || isNull(items)) {
            return true;
        }
        for (Object item : items) {
            if (isNull(item)) {
                return true;
            }
        }
        return false;
    }

    public static boolean isNotNull(Object value){

        return !isNull(value);
    }

    public static boolean isNotNull(Object value, Object... items){

        return !isNull(value,items);
    }


    public static boolean Null(Object value, Object... items){
        if (isNull(value) || isNull(items)) {
            return true;
        }
        for (Object item : items) {
            if (isNull(item)) {
                return true;
            }
        }
        return false;
    }
   
    /**
     * 进行加法运算
     * @param d1
     * @param d2
     * @return
     */
    public static double add(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(d1);
        BigDecimal b2 = new BigDecimal(d2);
        return b1.add(b2).doubleValue();
    }

    /**
     * 进行减法运算
     * @param d1
     * @param d2
     * @return
     */
    public static double sub(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(d1);
        BigDecimal b2 = new BigDecimal(d2);
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 进行乘法运算
     * @param d1
     * @param d2
     * @return
     */
    public static double mul(double d1, double d2){
        BigDecimal b1 = new BigDecimal(d1);
        BigDecimal b2 = new BigDecimal(d2);
        return b1.multiply(b2).doubleValue();
    }

    /**
     * 进行除法运算
     * @param d1
     * @param d2
     * @param len
     * @return
     */
    public static double div(double d1,double d2,int len) {
        BigDecimal b1 = new BigDecimal(d1);
        BigDecimal b2 = new BigDecimal(d2);
        return b1.divide(b2,len, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 进行四舍五入操作
     * @param d
     * @param len
     * @return
     */
    public static double round(double d,int len) {
        BigDecimal b1 = new BigDecimal(d);
        BigDecimal b2 = new BigDecimal(1);
        // 任何一个数字除以1都是原数字
        // ROUND_HALF_UP是BigDecimal的一个常量,表示进行四舍五入的操作
        return b1.divide(b2, len,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
   
    /**
* 生成订单流水号,格式为日期+时间
*/
    public static String RecordIDGenerater() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
return formatter.format(new Date());
    }
   
    /***
* 产生一个随机数
* @param i
* @return
*/
public static int random(int i){
Random  r=new Random();
int k=r.nextInt(i);
while(k<1000){
k=r.nextInt(i);
}
return k;
}

}
分享到:
评论

相关推荐

    Java文件加解密工具类

    Java文件加解密工具类,使用AES算法,256位秘钥。srcFile为输入文件,destFile为输出文件。

    zip_utils_src

    `zip_utils_src` 提供了C++语言实现的ZIP文件操作的源码和实例,这对于理解和开发相关功能非常有帮助。 首先,我们来讨论C++中的压缩库。在C++中,处理ZIP文件通常依赖于第三方库,如ZLib、LibZip或MiniZip。这些库...

    国密2、3秘钥生成及加解密

    本文将深入探讨这些算法,并基于提供的文件名,如`SM2Utils.java`、`SM3Digest.java`等,讲解如何在Java环境中实现国密SM2密钥生成与加解密,以及SM3摘要生成。 首先,让我们了解国密SM2算法。SM2是一种基于椭圆...

    utils使用实例.rar

    在IT行业中,Utils是一个常见的术语,它通常代表“Utils”或“Utilities”,指的是包含各种通用功能的工具类库。这个“utils使用实例.rar”的压缩包很可能是为了提供一个关于Utils类库的实际应用教程,帮助用户理解...

    医保局加解密方法工具类V1.0.zip

    sm4的java算法

    java使用bouncycastle实现椭圆曲线(ECC)双向加密解密

    Bouncy Castle是一个强大的Java加密库,提供了对ECC的支持,包括密钥生成、加密解密等功能。下面我们将详细探讨如何使用Bouncy Castle库来实现ECC的双向加密解密。 1. **椭圆曲线加密原理**: 椭圆曲线加密算法...

    plexus-utils-.jar.rar

    在使用Plexus Utils时,有几点需要注意:一是虽然Plexus Utils提供了丰富的工具类,但并不意味着所有功能都适合所有项目,应根据项目需求合理选择使用;二是不同版本可能存在不兼容的问题,升级前需要仔细测试;三是...

    bluez-utils-3.36

    本文将详细介绍BlueZ-utils-3.36版本,探讨其核心功能、使用场景以及如何在实际项目中进行操作。 BlueZ-utils-3.36是一个针对Linux平台的开源蓝牙工具集,它包含了各种命令行工具,用于管理蓝牙设备、建立连接、...

    rsa算法加密解密工具

    在Java中,通常一个包(package)会包含一系列相关的类,所以"rsautils"可能包含实现RSA算法的各种类,如`RSACipher`用于加密解密,`KeyGenerator`用于生成密钥对,以及可能的辅助类如`Utils`,提供一些辅助函数如...

    alsa-utils alsa-utils alsa-utils

    alsa-utils

    mtd-utils安装包

    **mtd-utils** 是一组用于管理Memory Technology Device (MTD)的工具,主要用于操作和维护嵌入式系统中的闪存设备。MTD是Linux内核中处理非易失性存储器(如EEPROM、EPROM、NOR和NAND闪存)的子系统。mtd-utils提供...

    android utils 工具类 大集合

    在Android开发中,工具类(Utils)是一种封装了常用功能的类库,它们可以提高代码的复用性和可维护性,让开发者能更专注于业务逻辑而不是基础操作。本篇文章将详细解析“android utils 工具类大集合”这一主题,探讨...

    RSA解密Utils

    针对加密解密的常用方法集合,全部集成到Utils中,可以直接使用

    SM2、SM3、SM4国密算法加密解密工具包

    基于Java的(SM2_SM3_SM4)国密算法java源代码及工具类,包含测试demo,一件加解密比较方便

    commons-lang-utils

    这篇内容将深入探讨Lang Utils模块的核心功能和常见应用场景,帮助开发者更好地理解和利用这个强大的工具。 一、概述 Apache Commons Lang是一个开源项目,其目标是提供Java语言没有涵盖但又非常实用的功能。Lang ...

    exfat-utils-1.0.1.tar.gz_exfat_exfat utils_exfat-utils_exfat-uti

    Linux中的exfat-utils是一个用于在Linux系统上读取、写入和管理ExFAT文件系统的工具集。 "exfat-utils-1.0.1.tar.gz" 是一个包含ExFAT实用程序的源码包,版本号为1.0.1。这个压缩包提供了在Linux环境下操作ExFAT...

    redis utils 工具类

    Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...

    ext4_utils

    本文将详细探讨ext4_utils的原理、功能及在三星线刷ROM制作过程中的应用。 一、ext4文件系统概述 ext4是Linux系统的第四代扩展文件系统,是对ext3的改进版本,旨在提高性能和可靠性。它引入了多项新特性,如更大的...

    异或加密解密算法

    `Encoder`类负责加密过程,`Decoder`类负责解密,而`Utils`类可以提供一些辅助函数,如将字符串转换为字节数组,以及处理其他与二进制数据相关的操作。 `Encoder`类的核心是异或操作。它会接收明文字符串和密钥,...

    Android常用工具类Utils

    本篇将详细阐述`Android常用工具类Utils`的相关知识点,涵盖系统操作、图像处理、对话框管理、Toast提示、文件操作、日志记录、通知栏推送、SharedPreferences存储、线程管理和时间日期处理等方面。 1. **系统工具*...

Global site tag (gtag.js) - Google Analytics