`
lp895876294
  • 浏览: 284846 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JAVA常用帮助类(持续更新)

    博客分类:
  • JAVA
 
阅读更多

使用注解确实提高代码的强壮度和开发速度,何乐而不为呢。

 

org.apache.commons.io.FileUtils:常用的不同目录(临时目录、用户目录)、文件大小格式化输出、写文件、读文件、创建包含父目录的文件、拷贝文件、删除文件、过滤文件、比较文件内容等。

org.apache.commons.io.FilenameUtils:根据路径分隔符判断不同系统、格式化文件路径、不同文件路径转换、获取文件名、扩展名等。

org.apache.commons.io.IOUtils:不同格式数据格式转换、开启或关闭文件读写流等。

 

Spring

org.springframework.web.util.WebUtil:对request、session、cookie和servletContext的一些操作。

ClassUtil:对于类的一些操作,可以用org.reflections.ReflectionUtils ,功能更强大。

StringUtil:常用字符串处理,裁剪、查找、空值判断、大写首字母、替换等。

NumberUtils:解析数字为指定类型(Integer、Float、Double)

ObjectUtils:主要包括对于数组的一些操作,结合java.util.Arrays对数组操作基本都包括。

BeanUtils:对实例化对象的操作,主要包括属性过滤拷贝、实例化类操作。

org.springframework.util.ReflectionUtils:spring提供的反射帮助类

CollectionUtils:对于集合的操作,包括查找、空判断、转Array等。

StreamUtil:用于inputStream、outputStream和byte[ ]之间的相互转换。

PatternMatchUtils:匹配String和Annotation表达式。

DigestUtils:MD5等算法的加密。

AnnotatedElementUtils: 相比较AnnotationUtils , 支持@inherited属性的注解

AnnotationUtils:获取在类上的注解信息。也可以自己写方法获取在类、方法和属性上的注解,参考如下。

private static final Map<String, Map<String, ?>> classAnnotationMap = new HashMap<String, Map<String, ?>>() ;
	/**
	 * 查询在get方法上是否存在注解
	 */
	public static <T extends Annotation> Map<String, T> getMethodAnnotation(Class beanClass , Class<T> annotationClass) throws IntrospectionException{
		Map<String, T> methodAnnotationMap = new HashMap<String, T>() ;
		PropertyDescriptor[] ps = Introspector.getBeanInfo(beanClass).getPropertyDescriptors() ;
		for (PropertyDescriptor propertyDescriptor : ps) {
			Annotation[] annotations = propertyDescriptor.getReadMethod().getAnnotations() ;
			T methodField = propertyDescriptor.getReadMethod().getAnnotation(annotationClass) ;
			if(methodField!=null){
				methodAnnotationMap.put(propertyDescriptor.getName(), methodField) ;
			}
		}
		return methodAnnotationMap ;
	}
	/**
	 * 查询在属性上是否存在注解
	 */
	public static <T extends Annotation> Map<String, T> getFieldAnnotation(Class beanClass , Class<T> annotationClass){
		Map<String, T> fieldAnnotationMap = new HashMap<String, T>() ;
		java.lang.reflect.Field[] fields = beanClass.getDeclaredFields() ;
		for (java.lang.reflect.Field field : fields) {
			T attributeField = field.getAnnotation(annotationClass) ;
			if(attributeField!=null){
				fieldAnnotationMap.put(field.getName(), attributeField) ;
			}
		}
		return fieldAnnotationMap ;
	}
	/**
	 * 获取注解
	 * @param beanClass:fieldName所在的类
	 * @param fieldName:字段名称
	 * @param annotationClass:注解类
	 * @return
	 * @throws IntrospectionException
	 */
	public static <T extends Annotation> T getAnnotation(Class beanClass , String fieldName, Class<T> annotationClass) throws IntrospectionException{
		if(classAnnotationMap.containsKey(beanClass.getName())){
			return (T) classAnnotationMap.get(beanClass.getName()).get(fieldName)  ;
		}
		Map<String, T> annotationMap = getMethodAnnotation(beanClass, annotationClass) ;
		Map<String, T> fieldAnnotationMap = getFieldAnnotation(beanClass, annotationClass) ;
		//合并annotationMap和fieldAnnotationMap
		annotationMap.putAll(fieldAnnotationMap) ;
		
		classAnnotationMap.put(beanClass.getName(), annotationMap) ;
		
		return annotationMap.get(fieldName) ;
	}

 

Assert:检验变量是否为目标类型,如果不是,抛出异常。这是一个抽象类,只提供了静态方法。

获取类型信息:(spring帮助类),能够获取get和set方法,

TypeInformation<Product> typeInformation = ClassTypeInformation.from(Product.class) ;

 

 

Reflections

<dependency>
      <groupId>org.reflections</groupId>
      <artifactId>reflections</artifactId>
      <version>0.9.9-RC1</version>
</dependency>

    例如:获取在某个包下一个父类的所有子类:

public static void main(String[] args) {
		
		org.reflections.Reflections reflections = new Reflections("com.projects.system.entity") ;
		
		Set<Class<? extends BaseEntity>> subSet = reflections.getSubTypesOf(BaseEntity.class) ;
		
		for (Class<? extends BaseEntity> clazz : subSet) {
			System.out.println(clazz.getName());
		}
	}

ReflectionUtils:反射帮助类。能够获取方法、属性字段及父类等,反射功能很强大。

分享到:
评论

相关推荐

    Java常用工具类

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

    java常用工具类

    以下是对标题和描述中提到的一些Java常用工具类的详细讲解: 1. **UUID类**: `java.util.UUID` 是用来生成全局唯一标识符的类。UUID(Universally Unique Identifier)是一种128位的数字,可以确保生成的ID在全球...

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

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

    Java常用Util类Jar

    在Java中,`java.util` 包是最基础也是最常用的工具类集合,而"Java常用Util类Jar"则是一个包含了更多自定义或者网络上流行实用工具类的集合,适用于Web项目的快速开发。 这个压缩包中的`ZycUtil`可能是一个自定义...

    java常用各种jar包(持续更新)

    在这个压缩包中,包含了多种Java开发中常用的库,可以帮助开发者快速实现特定功能。以下将详细讲解这些jar包及其在Java开发中的作用。 1. **JSON 开发**: - `json` 相关的jar包,如 `org.json.jar`,通常用于处理...

    java常用的帮助文档

    这里我们关注的是"java常用的帮助文档",这个压缩包中包含了四个关键部分:Java中文帮助文档、ext3.0帮助文档、jQuery帮助文档以及正则表达式帮助文档。这些文档对于Java开发者来说是极其宝贵的资源,它们提供了丰富...

    常用公共JAVA类,基础类

    总之,“常用公共JAVA类,基础类”这个项目提供了一套实用的Java工具集,帮助开发者高效地完成各种任务。通过深入理解和使用这些类,开发者可以提升代码质量和开发效率,同时也能更好地掌握Java编程的精髓。

    27个java常用的工具类

    下面将详细介绍这27个常用的Java工具类及其关键知识点。 1. **Arrays**: 这个类提供了对数组的各种操作,包括排序(sort)、复制(copyOf)和深度比较(deepEquals)等。 2. **Collections**: 针对集合框架的工具...

    JAVA 程序员常用参考文档

    "JAVA程序员常用参考文档"这个压缩包,很显然包含了Java开发者在日常工作中可能会频繁查阅的重要资料。这里我们将深入探讨JDK(Java Development Kit)和JQuery这两个标签所代表的知识点。 首先,JDK是Java开发的...

    Java-资源类文档

    13. **持续集成/持续部署(CI/CD)**:如Jenkins、GitLab CI/CD等工具的使用,帮助开发者实现自动化构建和部署。 14. **设计模式**:文档可能包含常见设计模式的解释和Java中的应用,如工厂模式、单例模式、观察者...

    java帮助和web应用

    - 学习资源:列出官方文档、教程网站、社区论坛等学习渠道,帮助读者持续进步。 综上所述,这份文档不仅覆盖了Java编程的基础知识,还深入介绍了Web开发的技术要点,并结合实际案例提供了丰富的实战经验和工具资源...

    Java AWT应用示例 - 持续更新

    8. **文件对话框**: FileDialog类允许用户浏览和选择文件,是处理文件I/O操作的常用方式。 9. **组件的可见性与大小**: Component类是所有AWT组件的基类,提供了setVisible()方法控制组件的可见性,以及setSize()和...

    java开发所需要的帮助文档

    13. **单元测试**:JUnit是Java常用的单元测试框架,学习如何编写测试用例和断言,保证代码质量。 14. **Maven或Gradle**:这两个构建工具可以帮助管理和构建Java项目,理解其配置和工作流程,可以提高开发效率。 ...

    Java常用开发工具集合

    根据提供的文件信息:“Java常用开发工具集合”,我们可以深入探讨一系列对于Java开发者来说非常重要的工具和技术。这些工具在软件开发过程中扮演着不可或缺的角色,能够极大地提高开发效率、简化复杂任务,并帮助...

    java开发中常用的linux命令汇总

    以下是一些Java开发中常用的Linux命令,它们对于优化开发流程至关重要。 1. **ls**:列出目录内容。`ls -l` 可以查看详细信息,包括文件权限、所有者、大小和修改时间。 2. **cd**:切换目录。用于在文件系统中...

    java常用工具大全java常用工具大全

    在这个"java常用工具大全"中,我们很可能会发现一系列与Java开发相关的实用工具和库,这些工具能够提高开发效率,优化代码质量,并简化日常编程任务。下面,我们将深入探讨一些常见的Java工具及其在实际开发中的应用...

    Java_Utils:Java常见工具类以及一些优雅的代码技巧(持续更新)

    这个项目持续更新,旨在帮助Java开发者提高代码质量和效率。以下将详细阐述其中可能涵盖的一些关键知识点: 1. **集合操作优化**:Java集合框架是其核心特性之一,Java_Utils可能包含了对ArrayList、LinkedList、...

    linux java常用配置

    本文将围绕“Linux Java常用配置”这一主题,深入探讨相关知识点,帮助读者理解和掌握如何在Linux环境下高效地配置和管理Java应用程序。 首先,Linux作为一款开源操作系统,因其稳定性和可定制性,成为了服务器领域...

    corejava开源包

    总结,CoreJava开源包是Java开发的基础,它的IO功能强大且灵活,API丰富,可以帮助开发者高效地完成各种任务。了解并熟练掌握CoreJavaAPI,对于提升编程效率和代码质量具有重要意义。同时,持续学习和实践,是成为...

    java开发常用的api文档

    Java开发常用的API文档是每一位Java开发者的重要参考资料,它包含了各种语言和技术的官方中文版文档,如W3School、Java 1.6 API、JavaScript和jQuery等。这些文档为开发者提供了详细的技术规范、类库说明以及函数...

Global site tag (gtag.js) - Google Analytics