Рубрики

Java.lang.Class класс в Java | Комплект 1

Java предоставляет класс с именем Class в пакете java.lang. Экземпляры класса Class представляют классы и интерфейсы в работающем приложении Java. Примитивные типы Java (логические, байтовые, char, short, int, long, float и double) и ключевое слово void также представлены в виде объектов Class. У него нет публичного конструктора. Объекты класса создаются автоматически виртуальной машиной Java ( JVM ). Это последний класс, поэтому мы не можем его расширять.

Методы класса Class широко используются в Reflection API.

Создание объекта класса

Существует три способа создания объекта Class:

  1. Class.forName («className»): Поскольку класс Class не содержит конструктора, в классе Class присутствует статический фабричный метод, который является Class.forName () , используемым для создания объекта класса Class. Ниже приведен синтаксис:
    Class c = Class.forName(String className)
    

    Приведенный выше оператор создает объект Class для класса, переданного в качестве аргумента String (className). Обратите внимание, что параметр className должен быть полностью квалифицированным именем желаемого класса, для которого должен быть создан объект Class. Методы в любом классе в Java, который возвращает тот же объект класса, также известны как фабричные методы. Имя класса, для которого должен быть создан объект Class, определяется во время выполнения.

  2. Myclass.class: когда мы пишем .class после имени класса, он ссылается на объект Class, который представляет данный класс. Он в основном используется с примитивными типами данных и только тогда, когда мы знаем имя класса. Имя класса, для которого должен быть создан объект Class, определяется во время компиляции. Ниже приведен синтаксис:
    Class c = int.class
    

    Обратите внимание, что этот метод используется с именем класса, а не с экземплярами класса. Например

    A a = new A();   // Any class A
    Class c = A.class; // No error
    Class c = a.class; // Error 
    
  3. obj.getClass (): этот метод присутствует в классе Object . Он возвращает класс времени выполнения этого (obj) объекта. Ниже приведен синтаксис:
    A a = new A();   // Any class A
    Class c = a.getClass();
    

Методы:

  1. String toString () : этот метод преобразует объект Class в строку. Он возвращает строковое представление, которое представляет собой строку «class» или «interface», за которой следует пробел, а затем полное имя класса. Если объект Class представляет примитивный тип, то этот метод возвращает имя примитивного типа, а если он представляет void, то возвращает «void».
    Syntax : 
    public String toString()
    Parameters : 
    NA
    Returns :
    a string representation of this class object.
    Overrides :
    toString in class Object
    

    // Java-программа для демонстрации метода toString ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.String");

            Class c2 = int.class;

            Class c3 = void.class;

              

            System.out.print("Class represented by c1: ");

             

            // метод toString на c1

            System.out.println(c1.toString());

              

            System.out.print("Class represented by c2: ");

              

            // метод toString на c2

            System.out.println(c2.toString());

              

            System.out.print("Class represented by c3: ");

              

            // метод toString на c3

            System.out.println(c3.toString());

        }

    }

    Выход:

    Class represented by c1: class java.lang.String
    Class represented by c2: int
    Class represented by c3: void
    
  2. Class <?> ForName (String className) : как обсуждалось ранее, этот метод возвращает объект Class, связанный с классом или интерфейсом с заданным именем строки. Другой вариант этого метода обсуждается далее.
    Syntax : 
    public static Class<?> forName(String className) throws ClassNotFoundException
    Parameters : 
    className - the fully qualified name of the desired class.
    Returns :
    return the Class object for the class with the specified name.
    Throws :
    LinkageError : if the linkage fails
    ExceptionInInitializerError - if the initialization provoked by this method fails
    ClassNotFoundException - if the class cannot be located
    

    // Java-программа для демонстрации метода forName ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // метод forName

            // возвращает объект Class для класса

            // с указанным именем

            Class c = Class.forName("java.lang.String");

              

            System.out.print("Class represented by c : " + c.toString());

        }

    }

    Выход:

    Class represented by c : class java.lang.String
    
  3. Class <?> ForName (String className, логическая инициализация, загрузчик ClassLoader) : этот метод также возвращает объект Class, связанный с классом или интерфейсом с указанным именем строки, используя данный загрузчик классов.

    Указанный загрузчик классов используется для загрузки класса или интерфейса. Если для параметра loader задано значение NULL, класс загружается через загрузчик класса начальной загрузки. Класс инициализируется только в том случае, если для параметра initialize задано значение true и он не был инициализирован ранее.

    Syntax : 
    public static Class<?> forName(String className,boolean initialize, ClassLoader loader) 
    throws ClassNotFoundException
    Parameters : 
    className - the fully qualified name of the desired class
    initialize - whether the class must be initialized
    loader - class loader from which the class must be loaded
    Returns :
    return the Class object for the class with the specified name.
    Throws :
    LinkageError : if the linkage fails
    ExceptionInInitializerError - if the initialization provoked by this method fails
    ClassNotFoundException - if the class cannot be located
    

    // Java-программа для демонстрации метода forName ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class для этого класса

            Class myClass = Class.forName("Test");

          

            ClassLoader loader = myClass.getClassLoader();

              

            // метод forName

            // возвращает объект Class для класса

            // с указанным именем, используя данный загрузчик классов

            Class c = Class.forName("java.lang.String",true,loader);

              

            System.out.print("Class represented by c : " + c.toString());

        }

    }

    Выход:

    Class represented by c : class java.lang.String
    
  4. T newInstance () : Этот метод создает новый экземпляр класса, представленный этим объектом Class. Класс создается как будто новым выражением с пустым списком аргументов. Класс инициализируется, если он еще не был инициализирован.
    Syntax : 
    public T newInstance() throws InstantiationException,IllegalAccessException
    TypeParameters : 
    T - The class type whose instance is to be returned
    Parameters : 
    NA
    Returns :
    a newly allocated instance of the class represented by this object.
    Throws :
    IllegalAccessException - if the class or its nullary constructor is not accessible.
    InstantiationException - if this Class represents an abstract class, an interface,
    an array class, a primitive type, or void
    or if the class has no nullary constructor; 
    or if the instantiation fails for some other reason.
    ExceptionInInitializerError - if the initialization provoked by this method fails.
    SecurityException - If a security manager, s, is present
    

    // Java-программа для демонстрации метода newInstance ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException, InstantiationException,

                             IllegalAccessException

        {

            // возвращает объект Class для этого класса

            Class myClass = Class.forName("Test");

              

            // создаем новый экземпляр этого класса

            // метод newInstance

            Object obj = myClass.newInstance();

              

            // возвращает класс выполнения obj

            System.out.println("Class of obj : " + obj.getClass());

        }

    }

    Выход:

    Class of obj : class Test
    
  5. boolean isInstance (Object obj) : Этот метод определяет, совместим ли указанный Объект с назначением, представленным этим Классом. Это эквивалентно оператору instanceof в Java.
    Syntax : 
    public boolean isInstance(Object obj)
    Parameters : 
    obj - the object to check
    Returns :
    true if obj is an instance of this class else return false
    

    // Java-программа для демонстрации метода isInstance ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c = Class.forName("java.lang.String");

      

            String s = "GeeksForGeeks";

            int i = 10;

              

              

            // проверка экземпляра класса

            // метод isInstance

            boolean b1 = c.isInstance(s);

            boolean b2 = c.isInstance(i);

              

            System.out.println("is s instance of String : " + b1);

            System.out.println("is i instance of String : " + b1);

              

        }

    }

    Выход:

    is s instance of String : true
    is i instance of String : false
    
  6. boolean isAssignableFrom (Class <?> cls) : Этот метод определяет, является ли класс или интерфейс, представленный этим объектом Class, тем же или является суперклассом или суперинтерфейсом класса или интерфейса, представленного указанным параметром Class.
    Syntax : 
    public boolean isAssignableFrom(Class<?> cls)
    Parameters : 
    cls - the Class object to be checked
    Returns :
    true if objects of the type cls can be assigned to objects of this class
    Throws:
    NullPointerException - if the specified Class parameter is null.
    

    // Java-программа для демонстрации метода isAssignableFrom ()

    public class Test extends Thread

    {

        public static void main(String[] args)

                             throws ClassNotFoundException, InstantiationException,

                             IllegalAccessException

        {

            // возвращает объект Class для этого класса

            Class myClass = Class.forName("Test");

              

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Thread");

            Class c2 = Class.forName("java.lang.String");

              

           // метод isAssignableFrom на c1

           // проверяет, можно ли назначить класс Thread из Test

           boolean b1 = c1.isAssignableFrom(myClass);

             

           // метод isAssignableFrom на c2

           // проверяет, можно ли назначить класс String из Test

           boolean b2 = c2.isAssignableFrom(myClass);

             

           System.out.println("is Thread class Assignable from Test : " + b1);

           System.out.println("is String class Assignable from Test : " + b2);

             

        }

    }

    Выход:

    is Thread class Assignable from Test : true
    is String class Assignable from Test : false
    
  7. boolean isInterface () : Этот метод определяет, представляет ли указанный объект Class тип интерфейса .
    Syntax : 
    public boolean isInterface()
    Parameters : 
    NA
    Returns :
    return true if and only if this class represents an interface type else return false
    

    // Java-программа для демонстрации метода isInterface ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.String");

            Class c2 = Class.forName("java.lang.Runnable");

              

            // проверка типа интерфейса

      

            // метод isInterface на c1

            boolean b1 = c1.isInterface();

      

            // Интерфейсный метод на c2

            boolean b2 = c2.isInterface();

              

            System.out.println("is java.lang.String an interface : " + b1);

            System.out.println("is java.lang.Runnable an interface : " + b2);

        }

    }

    Выход:

    is java.lang.String an interface : false
    is java.lang.Runnable an interface : true
    
  8. boolean isPrimitive () : Этот метод определяет, представляет ли указанный объект Class тип примитива.
    Syntax : 
    public boolean isPrimitive() 
    Parameters : 
    NA
    Returns :
    return true if and only if this class represents a primitive type else return false
    

    // Java-программа для демонстрации метода isPrimitive

    public class Test

    {

        public static void main(String[] args) 

        {

            // возвращает объект Class, связанный с целым числом;

            Class c1 = int.class;

              

           // возвращает объект Class, связанный с классом Test

            Class c2 = Test.class;

             

            // проверка типа примитива

      

            // isPrimitive метод на c1

            boolean b1 = c1.isPrimitive();

      

            // isPrimitive метод на c2

            boolean b2 = c2.isPrimitive();

              

            System.out.println("is "+c1.toString()+" primitive : " + b1);

            System.out.println("is "+c2.toString()+" primitive : " + b2);

        }

    }

    Выход:

    is int primitive : true
    is class Test primitive : false
    
  9. boolean isArray () : Этот метод определяет, представляет ли указанный объект Class класс массива.
    Syntax : 
    public boolean isArray() 
    Parameters : 
    NA
    Returns :
    return true if and only if this class represents an array type else return false
    

    // Java-программа для демонстрации метода isArray

    public class Test

    {

        public static void main(String[] args)

        {

            int a[] = new int[2];

              

            // возвращает объект Class для массива class

            Class c1 = a.getClass();

              

            // возвращает объект Class для класса Test

            Class c2 = Test.class;

              

            // проверка типа массива

      

            // метод isArray на c1

            boolean b1 = c1.isArray();

      

            // метод Array на c2

            boolean b2 = c2.isArray();

              

            System.out.println("is "+c1.toString()+" an array : " + b1);

            System.out.println("is "+c2.toString()+" an array : " + b2);

              

        }

    }

    Выход:

    is class [I an array : true
    is class Test an array : false
    
  10. boolean isAnonymousClass () : Этот метод возвращает true, если и только если этот класс является анонимным классом. Анонимный класс похож на локальные классы за исключением того, что у них нет имени.
    Syntax : 
    public boolean isAnonymousClass() 
    Parameters : 
    NA
    Returns :
    true if and only if this class is an anonymous class.
    false,otherwise.
    
  11. boolean isLocalClass () : Этот метод возвращает true, если и только если этот класс является локальным классом. Локальный класс — это класс, который объявляется локально в блоке кода Java, а не как член класса.
    Syntax : 
    public boolean isLocalClass()
    Parameters : 
    NA
    Returns :
    true if and only if this class is a local class.
    false,otherwise.
    
  12. boolean isMemberClass () : Этот метод возвращает true, если и только если этот класс является классом-членом. Класс-член является классом, который объявлен как нестатический член содержащего класса.
    Syntax : 
    public boolean isMemberClass() 
    Parameters : 
    NA
    Returns :
    true if and only if this class is a Member class.
    false,otherwise.
    
  13. Ниже приведена Java-программа, объясняющая использование методов isAnonymousClass (), isLocalClass и isMemberClass ().

    // Java-программа для демонстрации isAnonymousClass (), isLocalClass
    // и метод isMemberClass ()

      

    public class Test

    {

        // любой член класса Test

        class A{}

          

        public static void main(String[] args) 

        {

            // объявляем анонимный класс

            Test t1 = new Test()

            {

                // определение класса анонимного класса

            };

              

            // возвращает объект Class, связанный с объектом t1

            Class c1 = t1.getClass();

              

            // возвращает объект Class, связанный с классом Test

            Class c2 = Test.class;

              

            // возвращает объект Class, связанный с классом A

            Class c3 = A.class;

              

            // проверка на анонимный класс

            // метод isAnonymousClass

            boolean b1 = c1.isAnonymousClass();

            System.out.println("is "+c1.toString()+" an anonymous class : "+b1);

                  

            // проверка на локальный класс

            // метод isLocalClass

            boolean b2 = c2.isLocalClass();

            System.out.println("is "+c2.toString()+" a local class : " + b2);

              

            // проверка класса члена

            // метод isMemberClass

            boolean b3 = c3.isMemberClass();

            System.out.println("is "+c3.toString()+" a member class : " + b3);

             

        }

    }

    Выход:

    is class Test$1 an anonymous class : true
    is class Test a local class : false
    is class Test$A a member class : true
    
  14. boolean isEnum () : Этот метод возвращает true, если и только если этот класс был объявлен как enum в исходном коде.
    Syntax : 
    public boolean isEnum() 
    Parameters : 
    NA
    Returns :
    true iff this class was declared as an enum in the source code.
    false,otherwise.
    

    // Java-программа для демонстрации метода isEnum ()

      

    enum Color

    {

        RED, GREEN, BLUE;

    }

       

    public class Test

    {

        public static void main(String[] args) 

        {   

            // возвращает объект Class, связанный с Color (перечислимый класс)

            Class c1 = Color.class;

              

            // возвращает объект Class, связанный с классом Test

            Class c2 = Test.class;

              

            // проверка класса Enum

            // метод isEnum

            boolean b1 = c1.isEnum();

            boolean b2 = c2.isEnum();

              

            System.out.println("is "+c1.toString()+" an Enum class : " + b1);

            System.out.println("is "+c2.toString()+" an Enum class : " + b2);

        }

    }

    Выход:

    is class Color an Enum class : true
    is class Test an Enum class : false
    
  15. boolean isAnnotation () : Этот метод определяет, представляет ли этот объект Class тип аннотации. Обратите внимание, что если этот метод возвращает true, метод isInterface () также вернет true, поскольку все типы аннотаций также являются интерфейсами.
    Syntax : 
    public boolean isAnnotation() 
    Parameters : 
    NA
    Returns :
    return true if and only if this class represents an annotation type else return false
    

    // Java-программа для демонстрации метода isAnnotation ()

      
    // объявляем тип аннотации

    @interface A

    {

         // Аннотации определения элементов

    }

      

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class, связанный с аннотацией A

            Class c1 = A.class;

      

            // возвращает объект Class, связанный с классом Test

            Class c2 = Test.class;

              

            // проверка типа аннотации

            // метод isAnnotation

            boolean b1 = c1.isAnnotation();

            boolean b2 = c2.isAnnotation();

              

            System.out.println("is "+c1.toString()+" an annotation  : " + b1);

            System.out.println("is "+c2.toString()+" an annotation : " + b2);

              

        }

    }

    Выход:

    is interface A an annotation  : true
    is class Test an annotation : false
    
  16. String getName () : этот метод возвращает имя объекта (класс, интерфейс, класс массива, тип примитива или пустота), представленного этим объектом Class, в виде String.
    Syntax : 
    public String getName()
    Parameters : 
    NA
    Returns :
    returns the name of the name of the entity 
    represented by this object.
    

    // Java-программа для демонстрации метода getName ()

    public class Test

    {

        public static void main(String[] args) 

        {

            // возвращает объект Class, связанный с классом Test

            Class c = Test.class;

              

            System.out.print("Class Name associated with c : ");

      

            // возвращает имя класса

            // метод getName

            System.out.println(c.getName());

        }

    }

    Выход:

    Class Name associated with c : Test
    
  17. String getSimpleName () : этот метод возвращает имя базового класса, как указано в исходном коде. Возвращает пустую строку, если базовый класс является анонимным классом.

    Простое имя массива — это простое имя типа компонента с добавлением «[]». В частности, простое имя массива, тип компонента которого является анонимным, — «[]».

    Syntax : 
    public String getSimpleName()
    Parameters : 
    NA
    Returns :
    the simple name of the underlying class
    

    // Java-программа для демонстрации метода getSimpleName ()

    public class Test

    {

        public static void main(String[] args) 

                throws ClassNotFoundException 

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.String");

      

            System.out.print("Class Name associated with c : ");

              

            // возвращает имя класса

            // метод getName

            System.out.println(c1.getName());

      

            System.out.print("Simple class Name associated with c : ");

              

            // возвращает простое имя класса

            // метод getSimpleName

            System.out.println(c1.getSimpleName());

        }

    }

    Выход:

    Class Name associated with c : java.lang.String
    Simple class Name associated with c : String
    
  18. ClassLoader getClassLoader () : Этот метод возвращает загрузчик класса для этого класса. Если загрузчик классов является загрузчиком классов начальной загрузки, тогда этот метод возвратил ноль, поскольку загрузчик классов начальной загрузки реализован на родных языках, таких как C, C ++.
    Если этот объект представляет примитивный тип или void, то также возвращается значение null.
    Syntax : 
    public ClassLoader getClassLoader()
    Parameters : 
    NA
    Returns :
    the class loader that loaded the class or interface represented by this object
    represented by this object.
    Throws :
    SecurityException - If a security manager and its checkPermission method 
    denies access to the class loader for the class.
    

    // Java-программа для демонстрации метода getClassLoader ()

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class для этого класса

            Class myClass = Class.forName("Test");

              

              

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.String");

              

            // возвращает объект Class для примитива int

            Class c2 = int.class;

              

            System.out.print("Test class loader : ");

              

            // получение загрузчика класса для класса Test

            // метод getClassLoader для myClass

            System.out.println(myClass.getClassLoader());

              

            System.out.print("String class loader : ");

              

            // получение загрузчика класса для класса String

            // мы получим ноль, так как класс String загружен

            // загрузчиком класса BootStrap

            // метод getClassLoader на c1

            System.out.println(c1.getClassLoader());     

              

            System.out.print("primitive int loader : ");

              

            // получение загрузчика классов для примитива int

            // метод getClassLoader на c2

            System.out.println(c2.getClassLoader());

        }

    }

    Выход:

    Test class loader : sun.misc.Launcher$AppClassLoader@73d16e93
    String class loader : null
    primitive int loader : null
    
  19. TypeVariable <Class <T >> [] getTypeParameters () : этот метод возвращает массив объектов TypeVariable , представляющих переменные типа, объявленные обобщенным объявлением, представленным этим объектом GenericDeclaration , в порядке объявления
    Syntax : 
    public TypeVariable<Class<T>>[] getTypeParameters()
    Specified by:
    getTypeParameters in interface GenericDeclaration
    Parameters : 
    NA
    Returns :
    an array of TypeVariable objects that represent the type variables declared 
    by this generic declaration represented by this object.
    Throws :
    GenericSignatureFormatError - if the generic signature of this generic declaration 
    does not conform to the format specified in JVM.
    

    // Java-программа для демонстрации метода getTypeParameters ()

      

    import java.lang.reflect.TypeVariable;

      

    public class Test

    {

        public static void main(String[] args)

                             throws ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c = Class.forName("java.util.Set");

              

            // получение массива TypeVariable для объекта myClass

            // метод getTypeParameters

            TypeVariable[] tv = c.getTypeParameters();

              

            System.out.println("TypeVariables in "+c.getName()+" class : ");

              

            // перебираем все TypeVariables

            for (TypeVariable typeVariable : tv)

            {

                System.out.println(typeVariable);

            }

              

        }

    }

    Выход:

    TypeVariables in java.util.Set class : 
    E
    
  20. Класс <? super T> getSuperclass () : Этот метод возвращает класс, представляющий суперкласс сущности (класс, интерфейс, тип примитива или void), представленный этим классом.
    Если этот класс представляет либо класс Object, интерфейс, тип примитива или void, то возвращается значение null.
    Если этот объект представляет класс массива, то возвращается объект Class, представляющий класс Object.
    Syntax : 
    public Class<? super T> getSuperclass() 
    Parameters : 
    NA
    Returns :
    the superclass of the class represented by this object
    

    // Java-программа для демонстрации метода getSuperclass ()

      
    // базовый класс

    class A

    {

        // методы и поля

    }

      
    // производный класс

    class B extends A

    {

          
    }

      
    // Класс водителя

    public class Test

    {

        public static void main(String[] args) 

                throws ClassNotFoundException 

          

        {

            // возвращает объект Class, связанный с классом Test

            Class myClass = Test.class;

              

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("A");

            Class c2 = Class.forName("B");

            Class c3 = Class.forName("java.lang.Object");

              

            // метод getSuperclass возвращает суперкласс представленного класса

            // этим объектом класса

              

            System.out.print("Test superclass : ");

              

            // метод getSuperclass в myClass

            System.out.println(myClass.getSuperclass());

              

            System.out.print("A superclass : ");

              

            // метод getSuperclass на c1

            System.out.println(c1.getSuperclass());

              

            System.out.print("B superclass : ");

              

            // метод getSuperclass на c2

            System.out.println(c2.getSuperclass());

              

            System.out.print("Object superclass : ");

              

            // метод getSuperclass на c3

            System.out.println(c3.getSuperclass());

        }

    }

    Выход:

    Test superclass : class java.lang.Object
    A superclass : class java.lang.Object
    B superclass : class A
    Object superclass : null
    
  21. Type getGenericSuperclass () : Этот метод возвращает тип, представляющий прямой суперкласс сущности (класс, интерфейс, тип примитива или void), представленный этим классом.

    Если этот класс представляет либо класс Object, интерфейс, тип примитива или void, то возвращается значение null. Если этот объект представляет класс массива, то возвращается объект Class, представляющий класс Object.

    Syntax : 
    public Type getGenericSuperclass()
    Parameters : 
    NA
    Returns :
    the superclass of the class represented by this object
    Throws:
    GenericSignatureFormatError - if the generic class signature does not conform to the format 
    specified in JVM
    TypeNotPresentException - if the generic superclass refers to a non-existent 
    type declaration MalformedParameterizedTypeException - if the generic 
    superclass refers to a parameterized type
    that cannot be instantiated for any reason
    

    // Java-программа для демонстрации
    // getGenericSuperclass () метод

    public class Test

    {

        public static void main(String[] args) 

                throws ClassNotFoundException 

          

        {

            // возвращает объект Class, связанный с классом Test

            Class myClass = Test.class;

              

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.util.ArrayList");

            Class c3 = Class.forName("java.lang.Object");

              

            // метод getGenericSuperclass возвращает универсальный

            // суперкласс представленного класса

            // этим объектом класса

              

            System.out.print("Test superclass : ");

              

            // getGenericSuperclass метод на myClass

            System.out.println(myClass.getGenericSuperclass());

              

            System.out.print("ArrayList superclass : ");

              

            // метод getGenericSuperclass на c1

            System.out.println(c1.getGenericSuperclass());

              

            System.out.print("Object superclass : ");

              

            // метод getGenericSuperclass на c3

            System.out.println(c3.getGenericSuperclass());

        }

    }

    Выход:

    Test superclass : class java.lang.Object
    Set superclass : java.util.AbstractList<E>
    Object superclass : null
    
  22. Class <?> [] GetInterfaces () : этот метод возвращает интерфейсы, реализованные классом или интерфейсом, представленным этим объектом.

    Если этот объект представляет класс или интерфейс, который не реализует интерфейсы, метод возвращает массив длины 0.
    Если этот объект представляет примитивный тип или void, метод возвращает массив длины 0.

    Syntax : 
    public Class<?>[] getInterfaces()
    Parameters : 
    NA
    Returns :
    an array of interfaces implemented by this class.
    

    // Java-программа для демонстрации метода getInterfaces ()

      
    // базовый интерфейс

    interface A

    {

        // методы и объявления констант

    }

      
    // производный класс

    class B implements A

    {

        // реализации методов, которые были объявлены в A

    }

      
    // Класс водителя

    public class Test

    {

        public static void main(String[] args) 

                throws ClassNotFoundException 

          

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("B");

            Class c2 = Class.forName("java.lang.String");

              

            // метод getInterface на c1

            // возвращает интерфейсы, реализованные классом B

            Class c1Interfaces[] = c1.getInterfaces();

              

            // метод getInterface на c2

            // возвращает интерфейсы, реализованные классом String

            Class c2Interfaces[] = c2.getInterfaces();

              

              

            System.out.println("interfaces implemented by B class : ");

              

            // перебираем интерфейсы класса B

            for (Class class1 : c1Interfaces) 

            {

                System.out.println(class1);

            }

              

              

            System.out.println("interfaces implemented by String class : ");

              

            // перебираем интерфейсы класса String

            for (Class class1 : c2Interfaces) 

            {

                System.out.println(class1);

            }

        }

    }

    Выход:

    interfaces implemented by B class : 
    interface A
    interfaces implemented by String class : 
    interface java.io.Serializable
    interface java.lang.Comparable
    interface java.lang.CharSequence
    
  23. Type [] getGenericInterfaces () : этот метод возвращает типы, представляющие интерфейсы, непосредственно реализованные классом или интерфейсом, представленным этим объектом.

    Если этот объект представляет класс или интерфейс, который не реализует интерфейсы, метод возвращает массив длины 0.
    Если этот объект представляет примитивный тип или void, метод возвращает массив длины 0.

    Syntax : 
    public Type[] getGenericInterfaces()
    Parameters : 
    NA
    Returns :
    an array of interfaces implemented by this class
    Throws:
    GenericSignatureFormatError - if the generic class signature does not conform to the format 
    specified in JVM
    TypeNotPresentException - if the generic superinterfaces refers to 
    a non-existent type declaration MalformedParameterizedTypeException - if the
    generic superinterfaces refers to a parameterized type
    that cannot be instantiated for any reason
    

    // Java-программа для демонстрации метода getGenericInterfaces ()

      

    import java.lang.reflect.Type;

      

    public class Test

    {

        public static void main(String[] args) 

                throws ClassNotFoundException 

          

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.util.Set");

              

            // getGenericInterfaces () на c1

            // возвращает интерфейсы, реализованные интерфейсом Set

            Type c1GenericInterfaces[] = c1.getGenericInterfaces();

              

            System.out.println("interfaces implemented by Set interface : ");

              

            // перебираем интерфейсы класса Set

            for (Type type : c1GenericInterfaces)

            {

                System.out.println(type);

            }

        }

    }

    Выход:

    interfaces implemented by Set interface : 
    java.util.Collection<E>
    
  24. Package getPackage () : этот метод возвращает пакет для этого класса. Подсистема загрузчика классов в JVM Architecture использовала этот метод для поиска пакета класса или интерфейса.
    Syntax : 
    public Package getPackage()
    Parameters : 
    NA
    Returns :
    the package of the class, 
    or null if no package information is available
    from the archive or codebase. 
    

    // Java-программа для демонстрации метода getPackage ()

    public class Test

    {

        public static void main(String[] args) throws ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.String");

            Class c2 = Class.forName("java.util.ArrayList");

              

            // получение пакета класса

      

            // метод getPackage на c1

            System.out.println(c1.getPackage());

      

            // метод getPackage на c2

            System.out.println(c2.getPackage());

      

        }

    }

    Выход:

    package java.lang, Java Platform API Specification, version 1.8
    package java.util, Java Platform API Specification, version 1.8
    
  25. Field [] getFields () : Этот метод возвращает массив объектов Field, отражающих все доступные открытые поля класса (и всех его суперклассов) или интерфейса (и всех его суперклассов), представленных этим объектом Class.
    Syntax : 
    public Field[] getFields()  throws SecurityException
    Parameters : 
    NA
    Returns :
    the array of Field objects representing the public fields
    and  array of length 0 if the class or interface has no accessible public fields
    or if this Class object represents a primitive type or void.
    Throws :
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getFields ()

      

    import java.lang.reflect.Field;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Integer");

              

            // метод getFields на c1

            // это массив полей класса Integer

            Field F[] = c1.getFields();

              

            System.out.println("Below are the fields of Integer class : ");

              

            // перебираем все поля класса String

            for (Field field : F) 

            {

                    System.out.println(field);

            

        }

    }

    Выход :

    Below are the fields of Integer class :
    public static final int java.lang.Integer.MIN_VALUE
    public static final int java.lang.Integer.MAX_VALUE
    public static final java.lang.Class java.lang.Integer.TYPE
    public static final int java.lang.Integer.SIZE
    public static final int java.lang.Integer.BYTES
    
  26. Class <?> [] GetClasses () : Этот метод возвращает массив, содержащий объекты Class, представляющие все открытые классы и интерфейсы, которые являются членами класса, представленного этим объектом Class. Массив содержит открытый класс и члены интерфейса, унаследованные от суперклассов, а также открытый класс и члены интерфейса, объявленные классом.

    Этот метод возвращает массив длины 0, если у этого объекта Class нет открытых классов-членов или интерфейсов.
    Этот метод также возвращает массив длины 0, если этот объект Class представляет примитивный тип, класс массива или void.

    Syntax : 
    Class<?>[ ] getClasses()
    Parameters : 
    NA
    Returns :
    the array of Class objects representing the public members of this class
    Throws :
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getClasses ()

      

    public class Test

    {

        // базовый интерфейс

        public interface A

        {

            // методы и объявления констант

        }

      

        // производный класс

        public class B implements A

        {

            // реализации методов, которые были объявлены в A

        }

          

        public static void main(String[] args) 

                throws ClassNotFoundException 

          

        {

            // возвращает объект Class, связанный с классом Test

            Class c1 = Test.class;

              

            // метод getClasses на c1

            // возвращает массив объектов Class, содержащий все

            // открытые классы и интерфейсы, представленные классом Test

            Class[] c1Classes = c1.getClasses();

              

            System.out.println("public members of Test class : ");

              

            // перебираем все открытые члены класса Test

            for (Class class1 : c1Classes)

            {

                System.out.println(class1);

            }

              

        }

    }

    Выход:

    public members of Test class : 
    interface Test$A
    class Test$B
    
  27. Method [] getMethods () : Этот метод возвращает массив объектов Method, отражающих все доступные публичные методы класса или интерфейса и те, которые унаследованы от суперклассов и суперинтерфейсов, представленных этим объектом Class.
    Syntax : 
    public Method[] getMethods() throws SecurityException
    Parameters : 
    NA
    Returns :
    the array of Method objects representing the public methods
    and  array of length 0 if the class or interface has no accessible public method
    or if this Class object represents a primitive type or void.
    Throws :
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getMethods ()

      

    import java.lang.reflect.Method;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Object");

              

            // метод getMethods на c1

            // возвращает массив методов класса Object

            Method M[] = c1.getMethods();

              

            System.out.println("Below are the methods of Object class : ");

              

            // перебираем все методы класса Object

            for (Method method : M) 

            {

            System.out.println(method);

            }

        }

    }

    Выход:

    Below are the methods of Object class : 
    public final void java.lang.Object.wait() throws java.lang.InterruptedException
    public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
    public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
    public boolean java.lang.Object.equals(java.lang.Object)
    public java.lang.String java.lang.Object.toString()
    public native int java.lang.Object.hashCode()
    public final native java.lang.Class java.lang.Object.getClass()
    public final native void java.lang.Object.notify()
    public final native void java.lang.Object.notifyAll()
    
  28. Constructor <?> [] GetConstructors () : Этот метод возвращает массив объектов Constructor, отражающих все открытые конструкторы класса, представленного этим объектом Class.
    Syntax : 
    public Constructor<?>[] getConstructors() throws SecurityException
    Parameters : 
    NA
    Returns :
    the array of Constructor objects representing the public constructors of this class
    and  array of length 0 if the class or interface has no accessible public constructor
    or if this Class object represents a primitive type or void.
    Throws :
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getConstructors ()

      

    import java.lang.reflect.Constructor;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Boolean");

              

            // метод getConstructor на c1

            // возвращает массив конструкторов логического класса

            Constructor C[] = c1.getConstructors();

              

            System.out.println("Below are the constructors of Boolean class :");

              

            // перебираем все конструкторы

            for (Constructor constructor : C) 

            {

            System.out.println(constructor);

            }

        }

    }

    Выход:

    Below are the constructors of Boolean class :
    public java.lang.Boolean(boolean)
    public java.lang.Boolean(java.lang.String)
    
  29. Поле getField (String fieldName) : этот метод возвращает объект Field, который отражает указанное открытое поле члена класса или интерфейса, представленного этим объектом Class.
    Syntax : 
    public Field getField(String fieldName) throws NoSuchFieldException,SecurityException
    Parameters : 
    fieldName -  the field name
    Returns :
    the Field object of this class specified by name
    Throws :
    NoSuchFieldException - if a field with the specified name is not found.
    NullPointerException - if fieldName is null
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getField ()

      

    import java.lang.reflect.Field;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException,

                       NoSuchFieldException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Integer");

              

            // метод getField на c1

            // проверяет открытое поле в классе Integer с указанным параметром

            Field f = c1.getField("MIN_VALUE");

              

            System.out.println("public field in Integer class with MIN_VALUE name :");

            System.out.println(f);

        }

    }

    Выход:

    public field in Integer class with MIN_VALUE name :
    public static final int java.lang.Integer.MIN_VALUE
    
  30. Метод getMethod (String methodName, Class… parameterTypes) : этот метод возвращает объект Method, который отражает указанный открытый метод-член класса или интерфейса, представленного этим объектом Class.
    Syntax : 
    public Method getMethod(String methodName,Class... parameterTypes) throws 
    NoSuchFieldException,SecurityException
    Parameters : 
    methodName -  the method name
    parameterTypes - the list of parameters
    Returns :
    the method object of this class specified by name
    Throws :
    NoSuchMethodException - if a method with the specified name is not found.
    NullPointerException - if methodName is null
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации метода getMethod ()

      

    import java.lang.reflect.Method;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException,

                       NoSuchMethodException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Integer");

            Class c2 = Class.forName("java.lang.String");

              

            // метод getMethod на c1

            // проверяет открытый метод в классе Integer

            Method m = c1.getMethod("parseInt",c2);

              

            System.out.println("method in Integer class specified by parseInt : ");

            System.out.println(m);

        }

    }

    Выход:

    public method in Integer class specified by parseInt : 
    public static int java.lang.Integer.parseInt(java.lang.String) 
    throws java.lang.NumberFormatException
    
  31. Constructor <?> GetConstructor (Class <?>… ParameterTypes) : этот метод возвращает объект Constructor, который отражает указанный открытый конструктор класса, представленного этим объектом Class. Параметр parameterTypes представляет собой массив объектов Class, которые идентифицируют формальный параметр конструктора типы, в заявленном порядке.
    Syntax : 
    public Constructor<?> getConstructor(Class<?>... parameterTypes) 
    throws NoSuchMethodException,SecurityException
    Parameters : 
    parameterTypes - the list of parameters
    Returns :
    the Constructor object of the public constructor that matches the specified parameterTypes
    Throws :
    NoSuchMethodException - if a Constructor with the specified parameterTypes is not found.
    SecurityException - If a security manager, s, is present.
    

    // Java-программа для демонстрации
    // getConstructor () Конструктор

      

    import java.lang.reflect.Constructor;

      

    public class Test

    {

        public static void main(String[] args) 

                throws SecurityException,ClassNotFoundException,

                    NoSuchMethodException

        {

            // возвращает объект Class для класса

            // с указанным именем

            Class c1 = Class.forName("java.lang.Integer");

            Class c2 = Class.forName("java.lang.String");

              

            // метод getConstructor на c1

            // проверяет открытый конструктор в классе Integer

            // с указанным параметром Type

            Constructor c = c1.getConstructor(c2);

              

            System.out.println("Constructor in Integer class & String parameterType:");

            System.out.println(c);

        }

    }

    Выход:

    public Constructor in Integer class with String parameterType : 
    public java.lang.Integer(java.lang.String) throws java.lang.NumberFormatException
    
  32. Примечание . Методы getFields (), getMethods (), getConstructors (), getField (), getMethod (), getConstructor () широко используются в Reflection (см. Этот пример)

  33. T cast (Object obj) : этот метод используется для приведения объекта к классу или интерфейсу, представленному этим объектом Class.
    Syntax : 
    public T cast(Object obj)
    TypeParameters : 
    T - The class type whose object is to be cast
    Parameters : 
    obj - the object to be cast
    Returns :
    the object after casting, or null if obj is null
    Throws :
    ClassCastException - if the object is not null and is not assignable to the type T. 
    

    // Java-программа для демонстрации метода cast ()

    class A

    {

       // методы и поля

    }

      

    class B extends

    {

        // методы и поля

    }

      
    // Класс водителя

    public class Test

    {

        public static void main(String[] args) 

        {

            A a = new A();   

              

            System.out.println(a.getClass());

              

            B b = new B();

              

            // приведение b к a

            // метод приведения

            a = A.class.cast(b);

         

            System.out.println(a.getClass());

          

        }

    }

    Выход:

    class A
    class B
    
  34. <U> Класс <? extends U> asSubclass (Class <U> clazz) : Этот метод используется для приведения этого объекта Class для представления подкласса класса, представленного указанным объектом класса. Он всегда возвращает ссылку на этот объект класса.
    Syntax : 
    public <U> Class<? extends U> asSubclass(Class<U> class)
    TypeParameters : 
    U - The superclass type whose object is to be cast
    Parameters : 
    clazz - the superclass object to be cast
    Returns :
    this Class object, cast to represent a subclass of the specified class object.
    Throws :
    ClassCastException - if this Class object does not represent a 
    subclass of the specified class
    (here "subclass" includes the class itself).
    

    // Java-программа для демонстрации метода asSubclass ()

    class A

    {

       // методы и поля

    }

      

    class B extends

    {

        // методы и поля

    }

      
    // Класс водителя

    public class Test

    {

        public static void main(String[] args) 

        {

            A a = new A();   

              

            // возвращает объект Class для суперкласса (A)

            Class superClass = a.getClass();

              

            B b = new B();

              

            // возвращает объект Class для подкласса (B)

            Class subClass = b.getClass();

              

            // метод asSubclass

            // он представляет подкласс указанного объекта класса

            Class cast = subClass.asSubclass(superClass);

              

            System.out.println(cast);

          

        }

    }

    Выход:

    class B
    
  35. Эта статья предоставлена Гауравом Миглани . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Рекомендуемые посты:

    Java.lang.Class класс в Java | Комплект 1

    0.00 (0%) 0 votes