Hernán Eche Hernán Eche - 1 year ago 28
Java Question

How to determine (at runtime) if a variable is annotated as deprecated?

This code can check whether a class is deprecated or not

@Deprecated


public class
RetentionPolicyExample
{


public static void main(String[] args){
boolean isDeprecated=false;
if(RetentionPolicyExample.class.getAnnotations().length>0){
isDeprecated= RetentionPolicyExample.class
.getAnnotations()[0].toString()
.contains("Deprecated");
}
System.out.println("is deprecated:"+ isDeprecated);
}
}


But, how can be checked if any variable is annotated as deprecated?

@Deprecated


String
variable;

Answer Source
import java.util.stream.Stream;

Field[] fields = RetentionPolicyExample.class // Get the class
                .getDeclaredFields(); // Get its fields

boolean isAnyDeprecated = Stream.of(fields) // Iterate over fields
                // If it is deprecated, this gets the annotation.
                // Else, null
                .map(field -> field.getAnnotation(Deprecated.class))
                .anyMatch(x -> x != null); // Is there a deprecated annotation somewhere?
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download