Abstracción de código Java, genéricos, no entiendo el código de Java genéricos aquí -- java campo con generics campo con abstraction camp Relacionados El problema

Java code abstraction, generics, I don't understand the generics java code here


-1
vote

problema

Español
  IMyClass<Person> p = new MyClass<Person>; IMyClass<Employer> p = new MyClass<Employer>; 4  
Original en ingles
public abstract class BaseDataItem<V, T, ThisType extends BaseDataItem<V, T, ThisType>> implements DataItem<V, T> { }      public abstract class SingularDataItem<Value, T> extends BaseDataItem<Value, T, SingularDataItem<Value, T>> {              @Override         protected int buildHashCode(HashCodeBuilder builder) {             return builder.toHashCode();         }              @Override         protected boolean isEquivalent(SingularDataItem<Value, T> o) {             return true; // the parent class already verifies that the object is the same class         }     } 
        
     
     

Lista de respuestas

0
 
vote

Bueno, lo intenté y la salida devuelta es cierta, eso significa que no importa cuántos objetos diferentes cree para los datos de clase, todos siempre serán iguales y, por lo tanto, no sé por qué un código como este está escrito, tal vez este código se puede explicar cuando se vea a través de la perspectiva del dominio donde se usa este código.

  public class Test {  public static void main(String[] args) {      SingularDataItem<String , String> singularDataItem = new Data("testing");     SingularDataItem<String , String> singularDataItem2 = new Data("testing2");     System.out.println(singularDataItem.isEquivalent(singularDataItem2)); }}   class Data extends SingularDataItem<String , String>{ private String name;  public Data(String name) {     this.name = name; }  public String getName() {     return name; }}  abstract class BaseDataItem<V, T, ThisType extends BaseDataItem<V, T, ThisType>> implements DataItem<V, T> {  int buildHashCode(HashCodeBuilder builder){     return builder.toHashCode(); }  boolean isEquivalent(SingularDataItem<V, T> o){return true;}}  abstract class SingularDataItem<Value, T> extends BaseDataItem<Value, T, SingularDataItem<Value, T>> {  @Override protected int buildHashCode(HashCodeBuilder builder) {     return builder.toHashCode(); }  @Override protected boolean isEquivalent(SingularDataItem<Value, T> o) {     return true; // the parent class already verifies that the object is the same class }}   
 

Well I tried this and the output returned is true that means no matter how many different objects I create for the class Data they all will always be equal and hence I don't know why a code like this is written maybe this code can be explained when looked through the perspective of the domain where this code is used.

public class Test {  public static void main(String[] args) {      SingularDataItem<String , String> singularDataItem = new Data("testing");     SingularDataItem<String , String> singularDataItem2 = new Data("testing2");     System.out.println(singularDataItem.isEquivalent(singularDataItem2)); }}   class Data extends SingularDataItem<String , String>{ private String name;  public Data(String name) {     this.name = name; }  public String getName() {     return name; }}  abstract class BaseDataItem<V, T, ThisType extends BaseDataItem<V, T, ThisType>> implements DataItem<V, T> {  int buildHashCode(HashCodeBuilder builder){     return builder.toHashCode(); }  boolean isEquivalent(SingularDataItem<V, T> o){return true;}}  abstract class SingularDataItem<Value, T> extends BaseDataItem<Value, T, SingularDataItem<Value, T>> {  @Override protected int buildHashCode(HashCodeBuilder builder) {     return builder.toHashCode(); }  @Override protected boolean isEquivalent(SingularDataItem<Value, T> o) {     return true; // the parent class already verifies that the object is the same class }} 
 
 

Relacionados problema

4  Reenvío de mensajes en SmallTalk  ( Message forwarding in smalltalk ) 
Así que estoy escribiendo una aplicación donde un objeto tiene un montón de objetos de delegado que envía mensajes a. La idea es que puedo decir someObject...

4  ¿NPM soporta paquetes virtuales? ¿Es posible depender de cualquier paquete A o B?  ( Does npm support virtual packages is it possible to depend on either package a ) 
El sistema de gestión de paquetes de Debian tiene una gran característica que un paquete puede provide a paquete virtual de los que pueden depender otros ...

3  ¿Es el concepto de abstracción relevante para las tablas en MySQL? Si es así, ¿cómo puedo hacerlo?  ( Is the concept of abstraction relevant to tables in mysql if so how can i do i ) 
Quiero almacenar datos en varios motores en una base de datos MySQL, que incluye motores de pistón y giratorio. En los idiomas OO, puedo crear y extender u...

1609  ¿Por qué usar Getters and Setters / accesssss?  ( Why use getters and setters accessors ) 
¿Cuál es la ventaja de usar Getters and Setters, que solo se obtiene y establecen, en lugar de simplemente usar campos públicos para esas variables? Si los ...

14  ¿Más ventajas o desventajas para delegar miembros sobre las funciones clásicas?  ( More advantages or disadvantages to delegate members over classic functions ) 
rails g scaffold about2 add_1 es una función mientras que Add_2 es ​​un delegado. Sin embargo, en este contexto, los delegados pueden sufrir un papel simi...

3  Obtener la entidad de la tabla utilizando la reflexión del tipo abstracto  ( Get entity from table using reflection from abstract type ) 
OK, así que tengo una clase abstracta llamada producto. Tengo 3 tablas llamadas artículos, kits y paquetes que implementan el producto. El producto tiene una ...

40  El nivel de indirección resuelve cada problema  ( Level of indirection solves every problem ) 
¿Qué significa la cita "Nivel de indirección? ¿Qué problema" significa en la ciencia informática? ...

1  Programación funcional: Cuándo usar qué abstracción  ( Functional programming when to use which abstraction ) 
Hay muchos patrones en la programación funcional. p.ej. Monoides, mónadas, funtores E.T.C, pero estas son una abstracción de nivel muy alto y que realmente no...

0  Python Ide al código duplicado de refactor automático  ( Python ide to auto refactor duplicate code ) 
Digamos que estoy en el medio de la escritura de las series de comandos y decide que quiero convertirlo en un bucle para el bucle. Por ejemplo, diga que tengo...

3  Abstracción de protocolo en C #  ( Protocol abstraction in c sharp ) 
Hay docenas de protocolos de red y formatos de archivo (WAV, TCP, BMP, etc., etc.) ¿Hay una solución disponible para crear una capa de abstracción entre la ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos