`

maven重构时类型强制转换异常解决思路

阅读更多

背景:我们当前正在正常使用的项目,用maven进行重构。

问题:用maven的命令编译时,报错!具体如下:

分析:在我对应的controller位置,代码如下:

(DefectActivityTypeEnum) StringUtils.transformStringToEnum(DefectActivityTypeEnum.class, operateType));

 

这样以前能正常使用,现在就不应该存在问题,所以问题很有可能是出在工具类StringUtils的对应方法里。

下面我们就去看看方法里

public static Enum<?> transformStringToEnum(Class<?> cls,String str){
  return (Enum<?>) Enum.valueOf(cls, str);
}

返回的是Enum<?>, 在看看java.lang.Enum类的valueOf()方法里返回的是什么,

public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name) {
        T result = enumType.enumConstantDirectory().get(name);
        if (result != null)
            return result;
        if (name == null)
            throw new NullPointerException("Name is null");
        throw new IllegalArgumentException(
            "No enum const " + enumType +"." + name);
}

 哦,返回的是 <T extends Enum<T>> T   虽然和Enum<?> 同样都是限定返回值是枚举,但是Enum<T>,限定了返回值只能是和后面valueOf()里的参数T 同一个类型,而 ?则无限定,包括null,这就导致了maven这种强编译型的编译条件会报错!

修改结果:将StringUtils里的功能函数改为以下代码:

public static <T extends Enum<T>> T transformStringToEnum(Class<T> cls,String str){
          return Enum.valueOf(cls, str);
}

        问题解决了,特此记录,以防自己再犯类似错误,要养成常看api的习惯,不能想当然的写代码!

        勉之!

  • 大小: 18.9 KB
分享到:
评论

相关推荐

    IDEA中使用maven的异常解决方案.docx

    在 IDEA 中使用 Maven 的异常解决方案是指在使用 IDEA 集成 Maven 插件进行开发时可能出现的一些问题,以及解决这些问题的方法。下面是解决问题的详细步骤: 1. 确保 IDEA 中正确的引用了 Maven 和 Maven 本地仓库...

    Maven+SpringMVC实现统一异常处理

    本篇将详细介绍如何利用Maven和SpringMVC来实现统一的异常处理机制。 首先,我们需要理解什么是统一异常处理。在Web应用中,异常处理通常是分散在各个控制器方法中的,这使得代码复用性差,且不易维护。统一异常...

    idea2019导入maven项目中的某些问题及解决方法

    本文总结了在Idea2019中导入Maven项目时的一些常见问题和解决方法。 问题一:Maven版本不兼容 解决方法:下载Maven 3.6.1以前的版本,或者使用官网提供的链接下载。 问题二:设置Maven的Setting.xml文件 解决方法...

    maven项目转换WEB项目

    本文将详细介绍如何将一个Maven项目转换为Eclipse中的Web项目,并解释Maven的基本目录架构。 首先,让我们了解Maven项目的基本结构。一个标准的Maven项目通常包含以下几个关键目录: 1. `src/main/java`:这是存放...

    Maven: Unable to import maven project解决方案.pdf

    然而,开发者在使用IntelliJ IDEA(简称Idea)导入Maven项目时,可能会遇到“Unable to import Maven project”的错误提示,这会阻碍项目的正常启动和开发工作。本文将详细解释这个问题的原因,并提供解决方案。 ...

    Maven编译不兼容解决方案

    eclipse 中编译、运行都正常,但是如果用maven的打包命令 mvn clean package 进行打包时会发现有类型错误

    maven内存溢出解决放啊

    ### Maven内存溢出解决方案 #### 一、引言 在使用Maven进行项目构建时,尤其是在处理大型项目或执行资源密集型任务(如`mvn site`)时,经常会遇到Java堆空间溢出的问题。这类问题通常是由于Maven运行所需的内存...

    Maven发布Jar包中文乱码解决方法

    Maven发布Jar包中文乱码解决方法 Maven 是一个基于项目对象模型(Project Object Model,POM)的项目管理工具,广泛应用于 Java 项目的构建、测试和打包。然而,在使用 Maven 发布 Jar 包时,ometimes 中文字符会...

    springboot整合thymeleaf+maven实现异常处理页面

    在这个“springboot整合thymeleaf+maven实现异常处理页面”的案例中,我们将探讨如何在 SpringBoot 应用中整合 Thymeleaf 和 Maven,以及如何设置自定义的全局异常处理机制,使得当应用程序出现异常时,能够优雅地将...

    eclipse更新maven,jdk改变解决办法

    两种方法都可以解决eclipse更新maven时,jdk版本改变的问题,但博主推荐第二种方式,减少改动量。 在eclipse中新建了一个Maven工程,然后更改JDK版本为1.7,结果每次使用Maven &gt; Update project时JDK版本都恢复成...

    maven打包出错解决办法,亲测绝对可以!

    在开发Java项目时,Maven是一个非常重要的构建工具,它帮助我们管理依赖、构建项目以及自动化测试。然而,有时候在使用Maven进行打包操作时,可能会遇到各种问题。本篇文章将详细阐述如何解决Maven打包出错的问题,...

    chm版本Maven教程

    转换基于Maven的Web应用程序支持Eclipse IDE 使用Maven模板创建项目 使用Maven构建项目 使用Maven清理项目 使用Maven运行单元测试 将项目安装到Maven本地资源库 生成基于Maven的项目文档站点 使用“mvn site-deploy...

    Eclipse中maven异常Updating Maven Project的统一解决方案

    本文将详细讲解如何解决"Updating Maven Project"时出现的异常,提供一种统一的解决方案。 异常情况: 1. "An internal error occurred during: 'Updating Maven Project'.",错误信息为:"Unsupported ...

    ​实现maven项目中多版本依赖兼容使用解决方案

    依赖冲突通常发生在两个或更多库使用相同类的不同版本时,Maven默认会选择最高版本的依赖,但这可能导致运行时错误或不兼容性。在本案例中,公司需要使用一个第三方接口的加密jar包,该jar包内部依赖的高版本与现有...

    maven安装maven安装maven安装maven安装maven安装

    maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    ** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...

    maven仓库清理命令

    maven仓库清理命令

    如何在eclipse jee中创建Maven project并且转换为Dynamic web project

    在Eclipse JEE环境下,创建一个Maven项目并将其转换为Dynamic Web Project是开发Java Web应用程序的常见步骤。Maven是一种强大的项目管理工具,而Dynamic Web Project则是Eclipse中的一个特殊项目类型,专用于Web...

    新建Maven项目时出错:org.apache.maven.archiver.MavenArchiver.getManifest

    eclipse新建maven项目时,pom.xml文件第一行报错: org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration) 解决...

Global site tag (gtag.js) - Google Analytics