Obtener objeto de clase en Java

1 ¿Por qué deberíamos obtener el objeto de clase?

Cuando queremos obtener información y métodos de clases, utilizamos el mecanismo de reflexión en Java para facilitarnos la escritura de código de manera más flexible, podemos ensamblar el código cuando el programa se está ejecutando y también podemos implementar agentes dinámicos.

El mecanismo de reflexión permite al programa obtener la información interna de cualquier clase con un nombre conocido durante el tiempo de ejecución.

Luego, hay tres formas principales de obtener objetos de clase e información de contenido.

2 Utilice el método getClass()

2.1 Crear clase de persona

package com.clazz;

public class Person {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2.2 Crear clase de prueba

package com.clazz;

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        Class clazz = person.getClass();
        System.out.println(clazz.getName());
    }
}

El resultado de salida es el nombre completo de la ruta del paquete y el nombre de la clase:

com.clazz.Persona

Lo que hay que tener en cuenta es que cuando se crean varias instancias de objetos para la misma clase al mismo tiempo, en realidad solo hay una copia del objeto de clase.

Person person1 = new Person();
Person person2 = new Person();
System.out.println(person1.getClass() == person2.getClass());

El resultado de correr es verdadero.

3 Utilice atributos estáticos de clase

Este método no requiere la creación de instancias de la clase, y el objeto de clase de la clase se puede obtener directamente utilizando el atributo estático de la clase.

package com.clazz;

public class Test {
    public static void main(String[] args) {
        Class<Person> personClass = Person.class;
        System.out.println(personClass.getName());
    }
}

El resultado de salida es el nombre completo de la ruta del paquete y el nombre de la clase:

com.clazz.Persona

4 Utilice el método estático forName() en la clase Class

Para obtener el objeto de clase de esta manera, debe especificar la ruta completa de la clase del objeto de clase que se obtendrá en el método forName (), es decir, el nombre del paquete + nombre de la clase.

package com.clazz;

public class Test {
    public static void main(String[] args) {
        try {
            Class<?> aClass = Class.forName("com.clazz.Person");
            System.out.println(aClass.getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

El resultado de salida es el nombre completo de la ruta del paquete y el nombre de la clase:

com.clazz.Persona

Hay un problema que necesita atención aquí: debido a que especificamos manualmente la información de ruta completa de esta clase, es posible que no hayamos introducido el paquete o que el nombre del paquete y la información de ruta se hayan ingresado incorrectamente deslizándolos manualmente, y un Se puede informar un error, por lo que este método requiere lanzar una excepción.

 

Supongo que te gusta

Origin blog.csdn.net/QQ156881887/article/details/129636929
Recomendado
Clasificación