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

Java标准注释

冯淳
2023-03-14

我最近开始阅读注释。我在这里弃用了armStrong()方法,我需要抑制弃用警告,但无论我放在哪里,它都会显示“不必要的@SuppressWarnings(“弃用”)”。

有没有人能告诉我应该把它放在哪里,这样方法就不推荐了,警告就不会再出现了?

import java.io.*;
import java.lang.annotation.*;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)

@interface number
{
String arm();
}

public class Ch10LU2Ex4
{  
@Deprecated
@number(arm = "Armstrong number")
public static void armStrong(int n)
 {
    int temp, x, sum = 0;
    temp = n;
    while(temp!=0)
     {
        x = temp%10;
        sum = sum+x*x*x;
        temp = temp/10;
     }
    if(sum==n)
     {
        System.out.println("It is an armstrong number");
     }
    else
    {
        System.out.println("It is not an armstrong number");
    }
 }

public static void main(String[] args) 
  {

    try
    {   
        Ch10LU2Ex4 obj = new Ch10LU2Ex4();
        obj.invokeDeprecatedMethod();
        Method method = obj.getClass().getMethod("armStrong", Integer.TYPE);
        Annotation[] annos = method.getAnnotations();
        for(int i = 0; i<annos.length; i++)
        {
            System.out.println(annos[i]);
        }
    }
    catch(Exception e)
     {
        e.printStackTrace();
     }
  } 
    @SuppressWarnings("deprecation")
    public void invokeDeprecatedMethod()
    {
        try
        {
        System.out.println("Enter a number between 100 and 999:");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int x = Integer.parseInt(br.readLine());
        Ch10LU2Ex4.armStrong(x);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
  }  

共有2个答案

陈高寒
2023-03-14

这是一个特性,不是bug。从类本身中调用类的已弃用方法时,不需要使用SuppressWarnings,因为此类调用首先不会生成弃用警告。从其他类调用已弃用的方法将需要SuppressWarnings注释。

罗法
2023-03-14

使用来自另一个方法的已弃用方法会导致警告。

典型用法如下所示:

 @SuppressWarnings("deprecation")
 public void invokeDeprecatedMethod() {
     instanceofotherclass.armStrong(1);
 }

在同一个类中,假设程序员知道自己在做什么。

 类似资料:
  • 我最近遇到了java注释。谷歌搜索是什么使Java中的可变函数变得不安全,这让我相当困惑(堆中毒?删除类型?),所以我想知道一些事情: > 在意义上,是什么使一个不同的Java函数不安全(最好以深入示例的形式解释)? 是否有一些标准必须遵守,以确保他的功能确实是安全的?如果没有,有什么最佳做法来确保它?

  • 问题内容: 我有一个奇怪的问题,如果可以解决,那就太好了。出于调试目的(以及其他一些目的),我在标准输出上编写了控制台Java应用程序的日志。在标准输出上写一些内容,在标准错误上打印一些错误,例如错误。问题是这两个没有完全同步,因此打印线的顺序并不总是正确的。我猜这是因为打印了很多东西,并且碰巧一个输出的缓冲区已满,所以其他输出在第一个输出刷新其缓冲区之前就已打印出来。 例如,我想这样写: 有时打

  • 问题内容: 我想澄清一下,我正在寻找一种使用Streams计算标准偏差的方法(我目前有一种工作方法可以计算并返回SD,但不使用Streams)。 我正在使用的数据集紧密匹配,如Link中所示。如该链接所示,能够对我的数据进行分组并获得平均值,但无法弄清楚如何获取SD。 码 我还检查了DoubleSummaryStatistics上的链接,但似乎对SD没有帮助。 问题答案: 您可以将自定义收集器用于

  • 问题内容: 我最近遇到了Java 批注。搜寻是什么使Java中的可变参数功能不安全,这让我感到很困惑(堆中毒?擦除了类型?),所以我想知道一些事情: 是什么使得可变参数Java函数在某种意义上不安全(最好以深入示例的形式进行解释)? 为什么该注释留给程序员自己决定?这不是编译器应该能够检查的东西吗? 为了确保其功能确实是安全的,是否必须遵循一些标准?如果没有,有什么最佳实践来确保呢? 问题答案:

  • 我想知道是否有可能将一些自定义类型的新约束验证器注册到Bean验证规范定义的注释中。例如,让我们想象一下,我有一个类,它累加了几个int值 我想注册一个自定义约束验证器来支持这种类型的@正向注释(而不是创建自定义注释)。 这样以后我就可以使用这个: