¿Cómo implementar tecnología de clases abstractas en la programación Java?
La programación Java siempre ha sido un lenguaje de programación muy utilizado en Internet, por eso hoy aprenderemos cómo se implementan las clases abstractas en la programación Java. Esperamos que al leer este artículo, todos puedan tener una comprensión más profunda. de la tecnología de programación Java. Comencemos el contenido principal de la capacitación informática de hoy en la ciudad de Changping.
La clase abstracta AbstractMap implementa algunos métodos simples y comunes, lo cual no es difícil en sí mismo. Pero hay dos métodos en esta clase abstracta que son muy dignos de atención. Se puede decir que la implementación del código fuente de los métodos keySet y de valores es un modelo de libro de texto.
Las clases abstractas generalmente se implementan como un esqueleto para implementar métodos públicos para sus respectivas subclases. En el artículo anterior explicamos la interfaz Map, este artículo analiza y estudia la clase abstracta AbstractMap.
Hay bastantes estructuras de datos de tipo Map en Java. AbstractMap, como su implementación principal, implementa algunos métodos de la interfaz Map, lo que significa que proporciona métodos públicos para varias subclases de Map, y pueden ser varias. tener diferentes métodos sin implementación.
Las clases abstractas no pueden crear directamente instancias de clases abstractas mediante la nueva palabra clave, pero pueden tener constructores. AbstractMap proporciona un constructor sin parámetros modificado protegido, lo que significa que solo sus subclases pueden acceder a él (por supuesto, es una clase abstracta en sí misma y otras clases no pueden crear instancias de ella directamente), lo que significa que solo sus subclases pueden acceder a él. .
En la interfaz Map, una interfaz Entry se define internamente. Esta interfaz es la implementación interna del mapeo Map y se utiliza para mantener un par clave-valor. El valor clave se almacena en este Map.Entry. . AbstractMap implementa esta interfaz interna. Hay dos en uno: una es la variable SimpleEntry y la otra es la inmutable SimpleImmutableEntry.
publicstaticclassSimpleEntryimplementsEntry, java.io.Serializable
Implementa la interfaz Map.Entry e implementa Serializable (se puede serializar).
Sus métodos son relativamente simples y todas son operaciones para obtener y almacenar valores. La definición del valor clave es una modificación final, lo que significa que es una referencia inmutable. Además, su método setValue es ligeramente especial. Lo que se devuelve cuando se almacena el valor no es el valor almacenado, sino el valor anterior devuelto. Lo que debe centrarse en el aprendizaje son los métodos iguales y hashCode que anula.
publicstaticclassSimpleImmutableEntryimplementsEntry, java.io.SerializableSimpleImmutableEntry
Definido como una entrada inmutable, en realidad es inmutable porque no proporciona un método setValue, al que naturalmente no pueden acceder varios subprocesos al mismo tiempo. Al mismo tiempo, modifique mediante el método setValue. En comparación con SimpleEntry, sus variables miembro clave y de valor se definen como tipos finales. Llamar al método setValue generará una excepción UnsupportedOperationException.
Sus métodos iguales y hashCode son consistentes con SimpleEntry.
A continuación, verifique qué métodos en la interfaz Map están implementados por la clase abstracta AbstractMap.
publicintsize()
Map define un método EntrySet, que devuelve la colección Set de Map.Entry. Llamar directamente al método de tamaño de la colección Set es el tamaño del mapa.
publicbooleanisEmpty()
Llame al método de tamaño anterior. Si es igual a 0, está vacío.
publicbooleancontainsKey(Objectkey)
La implementación de este método es relativamente simple. Al llamar al método EntrySet, se obtiene el iterador de la colección Set, se atraviesa Map.Entry y se compara. con la tecla de parámetro. El mapa se puede almacenar como un valor de clave nulo. Dado que key=null es especial en Map (el valor de hashCode no se puede calcular), aquí también se juzga si la clave del parámetro está vacía.