Program to demonstrate how to determine class modifiers dynamically using Java Reflection API
Output of the program :
package com.hubberspot.reflection; import java.lang.reflect.Modifier; // Create classes with different modifiers as // final, abstract, public etc abstract class Animal { } public final class Dog extends Animal { public static void main(String[] args) { System.out.println("---------------------------------------------"); // Get the instance of Class as Dog.class Class classDog = Dog.class; // Class class has a method called as getModifiers(). // This method Returns the Java language modifiers for // the class as a integer. The modifiers consist of the // Java Virtual Machine's constants for public, protected, // private, final, static, abstract and interface; // they should be decoded using the methods of class Modifier. int modifier = classDog.getModifiers(); // Modifier class has many static methods such as isPublic , // isPrivate, isStatic, isFinal, isAbstract etc. These methods // returns back a boolean value checking whether given argument to // method is of particular modifier // See below for the demo ... if(Modifier.isPublic(modifier)) { System.out.println("Class Dog is declared as: public"); } if(Modifier.isFinal(modifier)) { System.out.println("Class Dog is declared as: final"); } if(!Modifier.isStatic(modifier)) { System.out.println("Class Dog is not declared as: static"); } System.out.println("---------------------------------------------"); Class classAnimal = Animal.class; modifier = classAnimal.getModifiers(); if(Modifier.isAbstract(modifier)) { System.out.println("Class Animal is declared as: abstract"); } if(!Modifier.isFinal(modifier)) { System.out.println("Class Animal is not declared as: final"); } if(!Modifier.isStatic(modifier)) { System.out.println("Class Animal is not declared as: static"); } System.out.println("---------------------------------------------"); } }
Output of the program :