`
lp895876294
  • 浏览: 279725 次
  • 性别: 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面试题库-附答案-持续更新.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java坦克大战游戏,基于Spring Boot,JDK8,Swing组件开发,有一些Bug,还在持续更新完善中....zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    JAVA 射击生存类小游戏.zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    java 程序员面试指南,常用面试题汇总解答.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java 游戏服务器 状态同步类.zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    Java 游戏服务器.zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    工具箱(java开发中常用工具类,web工程中常用的Filter等).zip

    持续集成与持续部署(CI/CD): Jenkins、Travis CI、GitHub Actions等工具负责自动化构建、测试和部署流程,提高交付效率和可靠性。 数据库管理与ORM工具: 数据库客户端工具用于连接、查询、更新数据库,ORM...

    《深度解析Java游戏服务器开发》源码.zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    用Java写的单机命令行麻将游戏。

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    Java游戏服务器热更例子。此热更新方法采用启用后更新。即游戏服务器在运行中如果出现bug,采用pid绑定的方式更新

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    Java课堂笔记、代码、java核心知识点梳理、java笔试面试资料.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java interview-高级Java面试题2023.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    『Java八股文』Java面试套路,Java进阶学习,打破内卷拿大厂Offer,升职加薪!.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java面试总结.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java面试宝典.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java面试笔记.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

    Java small game (Java桌面版小游戏).zip

    Java语言游戏项目实战资源包 内容概览: 这次分享为你带来了丰富的Java语言游戏项目实战资源,让你在实践中深入...持续学习与探索:Java语言和游戏开发技术都在不断更新,建议你在实践中持续学习新的技术和工具,不

    Java面试知识总结.zip

    持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次...

Global site tag (gtag.js) - Google Analytics