Refactorización de genéricos

 class AbstractA<T,U> {
    Map<String, Map<T, BigInteger>> counts = new HashMap<String, Map<T,BigInteger>>();
    Map<String, Map<BigDecimal, U>> sums = new HashMap<String, Map<BigDecimal, U>>();
 }
 class AbstractB<T> extends AbstractA<T, Set<T>> {
 }
 class D extends AbstractB<BigInteger> {
 }
 class R extends AbstractB<String> {
 }
 class S extends AbstractA<BigInteger, BigInteger> {
 }
Respuesta 1

Solo necesita dos parámetros genéricos:

public abstract class AbstractA<K, V> {
    private Map<String, Map<K, BigInteger>> counts = new HashMap<String, Map<K, BigInteger>>();
    private Map<String, Map<BigDecimal, V>> sums = new HashMap<String, Map<BigDecimal, V>>();

    public void m() {
    }
}


public class D extends AbstractA<BigInteger, Set<BigInteger>> {
}

public class R extends AbstractA<String, Set<String>> {
}

public class S extends AbstractA<BigInteger, BigInteger> {
}
Respuesta: 2

Lo primero que debe hacer es crear algo en común entre Stringy BigInteger. Mi recomendación es crear una nueva clase que sea composedde estos dos tipos:

public class Special  
{  
    private String string;  
    private BigInteger bigInt;  
    ...
}  

Ahora puedes cambiar los parámetros de tu me Mapgusta así:

Map<String, Map<Special, BigInteger> ...  

Ahora puede dejar la invocación en cada subclase y marcar la mfunción AbstractAcomo cualquiera abstracto proporcionar una implementación que se pueda anular.

Respuesta: 3

Estoy tratando de asegurar una aplicación web de demostración en wildfly. He definido este dominio de seguridad en el standalone.xml <security-domains> <security-domain name = "projects" cache -...

Mi declaración falsa de devolución no funciona como se esperaba. Tengo un método recursivo llamado "prosegui", funciona con la mayoría de las palabras con las que quiero trabajar, pero con algunas de ellas el retorno falso no ...

¿Alguien puede decirme por qué esto no se compila? TestClass de clase pública {doThis booleano privado = falso; vacío protegido fooThat () {} vacío protegido fooThis () {} público vacío ejecutar () ...

Cómo padarray en java que es agregar filas y columnas a una matriz existente al frente y atrás con un número dado. Por ejemplo: - sea x = 1 2 3 4 5 6 7 8 9 y ahora quiera ...