En Java, new es un operador donde newInstance() es un método donde ambos se usan para la creación de objetos. Si conocemos el tipo de objeto que se creará, entonces podemos usar un operador new, pero si no sabemos el tipo de objeto que se creará al principio y se pasa en tiempo de ejecución, en ese caso, se usa el método newInstance().
En general, el operador new se usa para crear objetos, pero si queremos decidir el tipo de objeto que se creará en tiempo de ejecución, no hay forma de que podamos usar el operador new. En este caso, tenemos que usar el método newInstance().
Analicemos el nuevo operador. En Java, la creación de objetos se lleva a cabo en los 3 pasos enumerados: creación de instancias e inicialización de objetos e invocación del constructor.
Datatype variable;
Como usaremos la nueva palabra clave, el compilador interpreta la variable como un objeto
Datatype object = new Constructor();
Ejemplo:
Java
// Java Program to Illustrate new Operator // Importing required classes import java.util.*; // Main class class GFG { // Main drive method public static void main(String[] args) { // List<Integer> al; // Ny now al is just a variable // Now creating object using new operator List<Integer> al = new ArrayList<>(); // Adding elements to above List al.add(1); al.add(4); al.add(3); // Printing elements of List System.out.print(al); } }
[1, 4, 3]
Nota: También podemos usarlo con el constructor donde queríamos llamar al objeto, no a las variables.
Ahora, si se nos ocurre el método newInstance() que está presente dentro del paquete java.lang dentro de la clase Class. Como ya discutimos, se usa donde cargamos la clase desde fuentes remotas.
Considere un escenario en el que nos conectamos a la base de datos más tarde usando nuestro programa java para la ejecución. Se puede explicar de manera más evidente con el ejemplo de JDBC. Recuerde que allí usamos el método Class.forName() para cargar registros dinámicamente y allí usamos el método newInstance() encima para crear objetos dinámicamente.
Ejemplo:
Java
// Java Program to Demonstrate Working of newInstance() // Method present inside java.lang.Class // Class 1 // Class 2 class A { int a; } class B { int b; } // Class 3 // Main class public class GFG { // Method 1 // To create an instance of class whose name is // passed as a string 'c'. public static void fun(String c) throws InstantiationException, IllegalAccessException, ClassNotFoundException { // Creating an object of type 'c' Object obj = Class.forName(c).newInstance(); // Printing the type of object created System.out.println("Object created for class:" + obj.getClass().getName()); } // Method 2 // Main driver method public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { // Calling above method over "A" fun("A"); } }
Producción:
Salida Explicación: el método forName() devuelve el objeto de clase ‘ Clase’ en el que llamamos al método newInstance() que devolverá el objeto de esa clase que estamos pasando como un argumento de línea de comandos.
- Si la clase pasada no existe, se producirá ClassNotFoundException .
- InstantionException ocurrirá si la clase pasada no contiene el constructor predeterminado, ya que el método newInstance() llama internamente al constructor predeterminado de esa clase en particular.
- IllegalAccessException ocurrirá si no tenemos acceso a la definición de la definición de clase especificada.
Artículo Relacionado: Reflexión en Java
Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA