`

实用工具类

阅读更多
/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2015 Desheng (Dennis) Kang.  All rights reserved.
*/


import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.StringTokenizer;



public class Utl
{
	private static double DOUBLE_COMPARE_DELTA = 0.000000001;
	
	public static void check(boolean condition, String errMsg) throws NFException
	{
		if (condition) throw new NFException(errMsg);
	}
	
	public static void check(boolean condition, String errMsg, ServiceResult result) throws NFException
	{
		if (condition) {
			result.setRetCode(ServiceResult.FAILED_CODE);
			result.setRetMsg(errMsg);
			throw new NFException(errMsg);
		}
	}
	
	public static void check(boolean condition, int errCode, String errMsg, ServiceResult result) throws NFException
	{
		if (condition) {
			result.setRetCode(errCode);
			result.setRetMsg(errMsg);
			throw new NFException(errMsg);
		}
	}
	
	public static String stackTrack(Exception e)
	{
		ByteArrayOutputStream os = new ByteArrayOutputStream(1000);
		
		e.printStackTrace(new PrintStream(os));
		return os.toString();
	}
	
	public static int toInt(String value)
	{
		return Integer.parseInt(value);
	}

	public static int toInt(String value, int defaultValue)
	{
		if (value == null)
			return defaultValue;
		else
			return Integer.parseInt(value);
	}
	
	public static long toLong(String value)
	{
		return Long.parseLong(value);
	}

	
	public static long toLong(String value, long defaultValue)
	{
		if (value == null)
			return defaultValue;
		else
			return toLong(value);
	}

	public static long[] toLongArray(String value, long[] defaultValue)
	{
		if (value == null)
			return defaultValue;
		else
			return toLongArray(value);
	}

	public static long[] toLongArray(String value)
	{
		ArrayList<Long> values = new ArrayList<Long>();
		
		StringTokenizer st = new StringTokenizer(value, ",");
		
		
		while(st.hasMoreTokens())
		{
			String lvStr = st.nextToken();
			Long lv = Long.parseLong(lvStr);
			values.add(lv);
		}

		long[] retL = new long[values.size()];
		
		int i = 0;
		for (Long lv : values)
		{
			retL[i++] = lv.longValue();
		}
		
		return retL;
	}
	
	public static double toDouble(String value)
	{
		return Double.parseDouble(value);
	}

	public static double toDouble(String value, double defaultValue)
	{
		if (value == null)
			return 0.0;
		else
			return Double.parseDouble(value);
	}
	
	/**
	 * Compare two double variables under a threshold value. If absolute value of the difference is 
	 * smaller than default threshold, the two values are considered to be identical. This is to 
	 * eliminate very small difference due to double value precision
	 * @param a
	 * @param b
	 * @return 0 if a = b, 1 if a > b, -1 if a < b
	 */
	public static int compare(double a, double b)
	{
		double delta = a - b;
		double absDelta = Math.abs(delta);
		
		if (a == 0)
		{
			if (absDelta < DOUBLE_COMPARE_DELTA) 
				return 0;
			else
				return (delta > 0? 1 : -1);
		}
		else
		{
			double relativeDelta = absDelta / Math.abs(a);
			
			if (relativeDelta < DOUBLE_COMPARE_DELTA)
				return 0;
			else
				return (delta > 0? 1 : -1);
		}
	}
	
	public static boolean gt(double a, double b)
	{
		return compare(a, b) > 0? true : false;
	}
	
	public static boolean ge(double a, double b)
	{
		return compare(a, b) >= 0? true : false;
	}
	
	public static boolean eq(double a, double b)
	{
		return compare(a, b) == 0? true : false;
	}
	
	public static boolean lt(double a, double b)
	{
		return compare(a, b) < 0? true : false;
	}
	
	public static boolean le(double a, double b)
	{
		return compare(a, b) <= 0? true : false;
	}
	
	public static <T> Method getMethod(Class<T> c, String methodName)
	{
		Method m = null;
		
		try 
		{
			m = c.getMethod(methodName, (Class<?>[])null);
		} catch (NoSuchMethodException | SecurityException e) 
		{}

		return m;
	}
}

 

分享到:
评论

相关推荐

    C#工具类库类库 包含所有的常用工具类

    标题中的"C#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...

    C#常用工具类代码集合Util(自己工作总结)

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。"MJ.Util"、"MJ.Util.Extension"和"MJ.Util.Model"这三个文件名暗示了这个压缩包可能包含了C#中的...

    C++工具类-常用工具类源码

    本文将深入探讨标题"**C++工具类-常用工具类源码**"所涵盖的知识点,主要围绕文件处理、编码处理、字符串处理、网络爬虫以及网页数据抓取等主题。 首先,让我们来看看文件处理方面。`FileUtil`类通常包含对文件的...

    Android开发常用工具类合集

    本资源包括常用工具类,目前收录了数组工具类、异步工具类、base64工具类、bitmap工具类、缓存工具类、时间工具类、http连接、json、IO、Map、MD5、数据库、SD卡、UbbToHtml等工具类合集

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    java常用工具类集合(也有转自他人的)

    "java常用工具类集合"是一个综合性的资源,它包含了从不同来源收集的实用工具类,旨在帮助开发者提高效率,减少代码重复。下面,我们将深入探讨这个主题,分析其中可能包含的知识点。 首先,`opslabJutil-master....

    Android常用工具类

    本篇文章将详细探讨Android开发中的几个常用工具类,包括LOG、Toast、SharedPreferences以及其他的实用工具类。 1. **LOG工具类**: 在Android开发中,日志(LOG)主要用于调试和追踪应用运行时的状态。自定义的...

    自己整理的C#常用工具类

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。这些工具类通常包含静态方法,不涉及实例化,直接通过类名调用,降低了代码冗余,提高了代码复用...

    C#常用工具类代码集合Util第二版本(自己工作总结)

    C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...

    java常用工具类封装util.rar

    "java常用工具类封装util.rar"这个压缩包文件很可能包含了开发者为了提高代码复用性和简洁性而编写的各种实用工具类。下面将详细介绍一些Java开发中常见的工具类及其功能。 1. **字符串处理工具类(StringUtil)**:...

    牛逼的java常用工具类

    以上仅是可能包含在"牛逼的java常用工具类"压缩包中的一部分知识点,实际内容可能还包括其他自定义的实用工具类或第三方库。这个压缩包是一个宝贵的资源,可以帮助开发者更好地理解和应用Java工具类,提升开发效率和...

    android开发常用工具类utils精装集合

    "android开发常用工具类utils精装集合"是一个专门针对Android开发者的资源包,包含了在公司项目中实际运用的Utils类集合。这些工具类覆盖了Android开发中的各种常见需求,旨在简化开发流程,提升开发效率。 1. **...

    java常用工具类汇总

    "Java常用工具类汇总"是一个集合了各种实用工具类的资源,旨在方便开发者在处理常见任务时提高效率。这个工具类库覆盖了字符串、文件、数组以及数学等多个方面,同时也提供了相应的API文档,使得开发者能够更好地...

    常用工具类

    "常用工具类"这个主题涵盖了Java编程中一系列实用的工具方法,这些方法可以帮助我们处理日常开发中的各种问题。在本文中,我们将深入探讨一些常见的Java工具类,并了解它们如何增强我们的代码质量。 首先,我们要...

    C# Util 实用工具类

    6. **Enums**: 枚举工具类通常包含一些处理枚举类型的实用方法,如将枚举值转换为字符串,或者根据字符串查找对应的枚举值。这有助于增强枚举类型的可读性和安全性。 7. **File**: 文件操作是任何应用开发中必不可...

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    【标题】"安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar" 涉及的是Android应用程序开发中的一个关键方面——工具类的集合。在Android开发中,工具类通常包含一系列静态方法,用于执行常见的、重复...

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    C#.net常用工具类,全部源码

    "C#.net常用工具类"可能是包含一系列静态类的dll文件,这些类封装了各种实用功能。例如,可能会有一个名为`TextProcessor`的类,提供诸如字符串格式化、正则表达式操作、HTML解析等功能。另一个可能是`DataHandler`...

    开发常用工具类

    "开发常用工具类"这个主题涵盖了各种不同领域的实用功能,例如字符串处理、日期时间操作、集合操作等。下面将详细介绍这些工具类中的常见知识点: 1. **字符串工具类**: - `StringUtils`:Apache Commons Lang ...

Global site tag (gtag.js) - Google Analytics