1

ここの人々の指示に従って2つのクラスを作成し、現在、非推奨の関数を1つのクラスから別のクラスに呼び出しています(私の前の質問を参照してください)。

関数呼び出しに @SuppressWarnings 行を追加しましたが、それでも機能しません。理由がわかりません。@SuppressWarnings アノテーションを使用して、非推奨の警告が表示されないようにする必要があります。どこに置くか誰か教えてくれませんか?

非推奨のクラス

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)

@interface number {
    String arm();
}

public class armstrong {
    @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");
        }
    }
}

非推奨のものを使用するクラス

import java.util.Scanner;
import java.lang.annotation.*;
import java.lang.reflect.Method;

public class Ch10LU2Ex4 {  
    public static void main(String[] args) {
        try {
            System.out.println("Enter a number between 100 and 999:");
            Scanner sc = new Scanner(System.in);
            int x = sc.nextInt();
            @SuppressWarnings("deprecation")
            armstrong obj = new armstrong();
            obj.armStrong(x);
            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();
        }
    }
}
4

2 に答える 2

1

注釈@SuppressWarnings("deprecation")はデ​​フォルトのコンストラクターに添付されます。

警告は実行を変更しません

警告はコンパイル時のみです

クラス@SuppressWarnings("deprecation")のメソッド自体を指す必要があります。mainCh10LU2Ex4

import java.util.Scanner;
import java.lang.annotation.*;
import java.lang.reflect.Method;

public class Ch10LU2Ex4 {  
    @SuppressWarnings("deprecation")    
    public static void main(String[] args) {
        try {
            System.out.println("Enter a number between 100 and 999:");
            Scanner sc = new Scanner(System.in);
            int x = sc.nextInt();
            armstrong obj = new armstrong();
            obj.armStrong(x);
            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();
        }
    }
}
于 2013-01-04T15:09:50.720 に答える
0

mainメソッドの前に移動するとどうなりますか?

@SuppressWarnings("deprecation")
public static void main(String[] args) 
于 2013-01-04T15:09:40.473 に答える