[JAVA] abstract et static en même temps
KX
Messages postés
19031
Statut
Modérateur
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'ai un problème car je n'arrive pas à imposer dans une classe abstraite que toutes les classes filles implémentent une méthode qui ne dépendent d'aucun objet (donc static)
Voici un code simplifié :
Y a-t-il quelqu'un qui connaîtrait une manière élégante de résoudre mon problème ?
Je vous remercie d'avance de votre aide.
Remarque :
Précédemment j'ai simplifié le code, actuellement mes classes sont plutôt comme ceci :
La confiance n'exclut pas le contrôle
J'ai un problème car je n'arrive pas à imposer dans une classe abstraite que toutes les classes filles implémentent une méthode qui ne dépendent d'aucun objet (donc static)
Voici un code simplifié :
public abstract class P
{
public abstract static P aleatoire(int n);
}
public class Q extends P
{
public Q(...) { ... }
public static P aleatoire(int n)
{
return new Q(...);
}
public static void main(...)
{
P p = Q.aleatoire(5);
}
}J'ai essayé de faire un constructeur pour remplacer ma méthode aléatoire, mais on ne peux pas non plus faire de constructeur abstrait...
public abstract class P
{
public abstract P(int n);
}
public class Q extends P
{
public Q(int n) { ... }
public static void main(...)
{
P p = new Q(5);
}
}Le mieux que j'arrive à faire pour me rapprocher de mon problème c'est d'enlever le static, mais le problème c'est que je suis obligé d'instancier un objet pour utiliser ma méthode alors que celle-ci n'utilise pas l'objet d'appel.
public abstract class P
{
public abstract P aleatoire(int n);
}
public class Q extends P
{
public Q(...) { ... }
public P aleatoire(int n)
{
return new Q(...);
}
public static void main(...)
{
P p = new Q(...).aleatoire(5);
}
}
Y a-t-il quelqu'un qui connaîtrait une manière élégante de résoudre mon problème ?
Je vous remercie d'avance de votre aide.
Remarque :
Précédemment j'ai simplifié le code, actuellement mes classes sont plutôt comme ceci :
public abstract class P<E extends C>
{
public abstract P<E> aleatoire(int n);
}
public class Q extends P<E>
{
public Q(...) { ... }
public P<E> aleatoire(int n)
{
return new Q(...);
}
public static void main(...)
{
P<E> p = new Q(...).aleatoire(5);
}
}
La confiance n'exclut pas le contrôle
A voir également:
- [JAVA] abstract et static en même temps
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Renommer plusieurs fichiers en même temps - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
- Excel trier plusieurs colonnes en même temps - Guide
1 réponse
J'ai plus ou moins réussi à compiler en bidouillant un truc tout moche.
Mais à l'exécution ça plante à cause du cast de Object...
La confiance n'exclut pas le contrôle
Mais à l'exécution ça plante à cause du cast de Object...
public abstract class P
{
protected abstract P aleatoireAux(int n);
public static P aleatoire(int n)
{
return ((P) new Object()).aleatoireAux(n);
}
}
public class Q extends P
{
public Q(...) { ... }
protected P aleatoireAux(int n)
{
return new Q(...);
}
public static void main(...)
{
P p = (P) P.aleatoire(5);
}
}
La confiance n'exclut pas le contrôle