当前位置: 首页 > 知识库问答 >
问题:

如何将@SuppressWarning(“unchecked”)用于特定代码行而不进入方法级别

王楚青
2023-03-14

我创建了一个函数,其中我在方法级别使用了@SuppressWarning(“未选中”),它按预期工作,但我需要将此@SuppressWarning(“未选中”)移动到只有警告进来的那些代码行,而不是在方法级别:

public static <T> T marshal(Class<T> cls , String xml){
      T res;
      if(cls == xml.getClass()){
          res=(T) xml;--->Need to use @SuppressWarning("unchecked") before this line
      }else{
         JAXBContext ct= JAXBContext.newInstance(cls);
         Unmarshal marshal=ctx.createUnmarshller();
         res=(T)marshal.unmarshal(new StringReader(xml));-->Need to use @SuppressWarning("unchecked") before this line
      }
      return res;
     }

在上面的函数中,我必须在if和else之后使用@SuppressWarning(“unchecked”),因为这些是显示警告的地方。

共有2个答案

相俊迈
2023-03-14

如果合适,您可以使用泛型方法来处理<code>@SuppressWarning(“unchecked”),定义如下:

@SuppressWarnings("unchecked")
public <C> C cast(Object o) {
    return (C) o;
}

然而,当您使用它并希望进行检查时,您需要在赋值时检查可能的<code>ClassCastException</code>(请参见此)。比如:

try {
    res = cast(xml);
} catch (ClassCastException cce) {
    // a bug, help!
}
段干靖
2023-03-14

Java注释只能放置在某些结构中,这些结构在ElementType中枚举,在指定注释可以使用的位置时使用(在@Target()中)。SubpressWarning具体声明为:

@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,MODULE})
@Retention(SOURCE)
public @interface SuppressWarnings

这意味着它可以放置在这些声明上下文之一上。因此,正如@Fluffy在评论中提出的,引入注释可以放置的这种上下文的一种方法是引入一个局部变量:

@SuppressWarnings("unchecked") 
final T uncheckedXml = (T) xml;

res = uncheckedXml;
 类似资料:
  • 问题内容: 我在项目中配置了一个checkstyle验证规则,该规则禁止使用超过3个输入参数来定义类方法。该规则适用于我的类,但有时我必须扩展第三方类,而第三方类则不遵守此特定规则。 是否有可能指示“ checkstyle”某种方法应以静默方式忽略? 问题答案: 在http://checkstyle.sourceforge.net/config_filters.html#SuppressionCo

  • 问题内容: 我需要一些有关ajax的liferay方面的帮助。现在,我正在从页面调用ajax方法来提交一些数据。 这是我正在使用的示例代码: 在我的课程中,有一种方法被此ajax调用所调用: 所以我的问题是,现在它只是通过任何ajax类的默认方法进行校准。但是如何在ajax调用中调用类的特定方法? 我是ajax的新蜜蜂。所以无论如何请引导我..... 使用以下网址调用ajax时出现以下错误 我的流

  • 我有这样的东西: 现在,有一个需求,添加一个公共API,用于检查输入类型是否有效,只有当validateFlag为true时。 你能在这里建议一些设计吗?最适合搭配什么? 我在想这样的事情:

  • 本文向大家介绍PHP cURL初始化和执行方法入门级代码,包括了PHP cURL初始化和执行方法入门级代码的使用技巧和注意事项,需要的朋友参考一下 这个是采集基础,最好熟悉一下

  • 我们正在使用Flyway在我们的测试环境中使用sql脚本保持最新的许多数据库,并且它工作正常。但是我们特别需要使用csv文件更新数据库。我知道Flyway提供了一些基于Java的迁移来处理更复杂的更新。但问题是,这些 Java 类的名称中都有所需的版本,这将迫使我们在每次使用该类时重新编译该类。如果我们能像对待sql文件一样将csv文件放在迁移目录中,那将更加简单。然后,一些特定的Java代码将处

  • 我不是很清楚怎么说这个,但我正在做一个21点游戏,玩家收到2张牌后,他们得到一个Y/N选项来收到另一张牌。我将播放器的响应(Y/N)通过一个方法,该方法在输入无效输入时保持防弹和重新提示,然后将其返回到主代码,以便它将运行。下面是我的防弹方法的代码: } 我现在遇到的问题是防弹的工作,但是在一个Y/N放进去之后,玩家的卡没有显示出来。这是来自我的主要方法的代码: 当播放机输入无效时,程序要求播放机