J'ai donné une instance de la classe d'objet (chaîne, int, double ou booléen) d'une base de données. J'ai besoin d'écrire une méthode qui peut comparer cet objet à quelque chose d'autre (chaîne, int, double ou booléen) à l'aide de opérateurs binaires (par exemple , Etc.). Je ne dirigerai cette méthode que si les deux objets sont du même type. Ma méthode ressemble à
public boolean comparison(Object a, Object b, String operator) {
int result = a.compareTo(b);
String a2 = a.getClass().getName();
//followed by if/else if blocks to return true or false
//depending on operator and result
}
3 Réponses :
Étant donné que la méthode comparète code> est déclarée dans le java.lang.comparable interface, l'utilisation de Paramètres de type bornée peut contraindre votre A code> et B code> arguments afin d'accepter uniquement des objets qui implémentent l'interface elle-même.
Vous pouvez vérifier le paramètre opérateur code> afin d'affecter le résultat booléen.
Si vous le souhaitez, l'utilisation d'un ENUM code> aide à éviter l'inadéquation de la chaîne.
Pour la brièveté, le code ci-dessous ne prend pas en compte null code> valeurs. enum Operator {
GREATER_OR_EQUALS,
LESS_OR_EQUALS
}
public <T extends Comparable<T>> boolean comparison(T a, T b, Operator operator) {
int test = a.compareTo(b);
switch(operator) {
case GREATER_OR_EQUALS:
return test >= 0;
default:
return test <= 0;
}
}
La voie Java est de d'abord utiliser l'opérateur code> d'instance code> à une classe appropriée: Bien sûr, cela ne fonctionne bien que si vos hypothèses sont vraiment correctes et que l'objet est vraiment une chaîne comparète () code> donne vous un résultat négatif si a , 0 code> lorsque a == b code> et un résultat positif si a> b code >. Donc, seul du résultat INT vous dit suffisamment pour décider des opérations de comparaison potentielles. Les types numériques int code> / integer code>, ... ont des méthodes similaires. P > code> ou booléen code>. Et veuillez noter que booléen code> et booléen code> sont deux types d'une manière ou d'une autre manière différente! p> p>
La réponse supérieure résume ce que je voulais faire. Le code compilé avec succès lorsque j'ai dit P>
int result;
if (a instanceof Comparable && b instanceof Comparable) {
result = ((Comparable) a).compareTo((Comparable) b);
}
J'ai posté ma propre solution. Il y a une période de deux jours avant de pouvoir l'accepter. Je vais l'accepter alors.