Comment déclarer une méthode abstraite, de sorte que le paramètre type (classe) est toujours les Enfants de la classe?

EDIT : voir en bas de

Tout d'abord j'ai cherché une réponse avant de poser celui-ci, mais comme vous pouvez le voir avec le titre, je n'ai aucune idée de comment cela s'appelle et je vais modifier la question à chaque fois que je le peux.
S'il vous plaît pardonnez-moi.

J'ai le texte suivant classe abstraite :

public abstract class ValidableDTO implements Serializable {
    public abstract boolean isValid();
    public abstract boolean equals(ValidableDTO compared);
    //EDIT : new solution
    public abstract <T extends ValidableDTO> boolean equals(T compared);
}

Je voudrais obtenir une mise en œuvre similaire :

public class MyDTO extends ValidableDTO {

    private String myValue; //With a getter and setter of course

    public MyDTO() {
        //...
    }

    @Override
    public boolean isValid() {
        return true; //Validation
    }

//__________ LOOK AT THE FOLLOWING PARAMETER TYPE __________­­
    @Override
    public boolean equals(MyDTO compared) {
        return true; //Comparison
    }
}

Le plus proche que j'ai pu obtenir est

@Override
public boolean equals(ValidableDTO compared) {
    boolean isEqual = false;

    if (compared instanceof MyDTO) {
        isEqual = getValue().equals(compared.getValue());
    }

    return isEqual;
}

J'ai essayé d'utiliser public abstract boolean equals(<? extends ValidableDTO> compared); mais cela ne fonctionne pas.

Est que même possible (il devrait être OMI) ? Je vous remercie pour votre temps et ... je ne sais toujours pas comment décrire ce en 1 phrase... (lol)

Sincèrement.
- moi

Un pas de plus, grâce à l'utilisateur : aps !

les ouvrages suivants, dans l'Abstrait, la définition de la classe (ValidableDTO)

public abstract <T extends ValidableDTO> boolean equals(T compared);

__MAIS__

la mise en œuvre dans MyDTO n'est toujours pas à l'amende et à la fin, c'est exactement la même que l'aide de mon "si instanceof" solution car ValidableDTO est une classe abstraite et doit être héritée.

À quoi ça ressemble pour l'instant à l'aide de l'Aps solution :

public <T extends ValidableDTO> boolean equals(T compared) { ... }

Je dois encore vérifier si c'est un MyDTO exemple...

SUR UNE NOTE de CÔTÉ, google ne semble pas savoir si "Validable" ou "traitement pouvant être validé" sont de vrais mots.. ce qui est correct?

OriginalL'auteur dominicbri7 | 2011-06-28