| 29/04/2013 03:41 |
@Matworms |
même si la solution est correcte |
| 29/04/2013 03:41 |
@Matworms |
mais il accepte pas le code avec warnings |
| 29/04/2013 03:41 |
@Matworms |
je fais ça pour un "challenge" en fait |
| 29/04/2013 03:40 |
@Matworms |
Unchecked cast |
| 29/04/2013 03:40 |
@Matworms |
type paramétré |
| 29/04/2013 03:40 |
@Midhrin |
attention vous êtes peut-être en train de dire que cet oiseau est un éléphant |
| 29/04/2013 03:40 |
@Matworms |
je m'en doutais bien |
| 29/04/2013 03:39 |
@Matworms |
oui oui |
| 29/04/2013 03:39 |
@Midhrin |
bah oui tu cast un objet de type inconnu en type configuré ^_^ |
| 29/04/2013 03:39 |
@Matworms |
T data = (T) new NodeData(...); -> warning |
| 29/04/2013 03:39 |
@Matworms |
mais ça me fait un warning, et je veux SURTOUT PAS de warnings |
| 29/04/2013 03:38 |
@Matworms |
ça passe en castant new NodeData() |
| 29/04/2013 03:37 |
@Midhrin |
fin elle implémente |
| 29/04/2013 03:37 |
@Midhrin |
non disons qu'elle hérite de pas mal de truc |
| 29/04/2013 03:36 |
@Matworms |
|
| 29/04/2013 03:35 |
@Midhrin |
bon c'est peut-être pas la bonne classe classique à regarder |
| 29/04/2013 03:34 |
@Matworms |
plutôt passer NodeData dans T |
| 29/04/2013 03:34 |
@Midhrin |
je lis les sources de linkedlist j'aurais peut-être une soluce |
| 29/04/2013 03:34 |
@Matworms |
enfin non |
| 29/04/2013 03:34 |
@Matworms |
autrement dit : instancier du T |
| 29/04/2013 03:34 |
@Matworms |
ce que je sais pas, c'est comment faire comme ça et que ça compile quand même |
| 29/04/2013 03:33 |
@Matworms |
je sais pourquoi il veut pas de mon code |
| 29/04/2013 03:33 |
@Matworms |
j'avais compris |
| 29/04/2013 03:33 |
@Midhrin |
(exact même ordre c'est pas très la france ça) |
| 29/04/2013 03:33 |
@Midhrin |
il va sortir une erreur car ta méthode ne sera appliquable que pour des types qui ont des constructeurs respectifs prenant exactement les même param' dans l'exact même ordre |
| 29/04/2013 03:32 |
@Midhrin |
c'pour ça que tu ne peux pas appeler le constructeur |
| 29/04/2013 03:32 |
@Midhrin |
à la compilation il sait pas ce qu'il va utiliser comme type |
| 29/04/2013 03:31 |
@Midhrin |
ué ça c'est parce qu'on pense runtime |
| 29/04/2013 03:31 |
@Matworms |
et moi je passe NodeData comme type |
| 29/04/2013 03:31 |
@Matworms |
les arguments étant définis avec T comme type pour data |
| 29/04/2013 03:30 |
@Matworms |
c'est là qu'est le problème d'ailleurs |
| 29/04/2013 03:30 |
@Matworms |
soit via le constructeur, soit via setData() |
| 29/04/2013 03:30 |
@Matworms |
du coup je dois créer des instances de NodeData dans B et affecter ces instances |
| 29/04/2013 03:29 |
@Matworms |
|
| 29/04/2013 03:29 |
@Midhrin |
(mes commentaires sont constructifs :| ) |
| 29/04/2013 03:29 |
@Matworms |
j'en ai pas fait beaucoup aussi, mais c'est pas un problème basique je pense |
| 29/04/2013 03:29 |
@Midhrin |
ouki |
| 29/04/2013 03:28 |
@Matworms |
en fait, j'avais prévu de donner à B la responsabilité de créer ses propres enfants |
| 29/04/2013 03:28 |
@Midhrin |
(j'ai ttellement presque jamais bosser sur l'implé de classe générique, c'est loin tout ces cours) |
| 29/04/2013 03:28 |
@Midhrin |
oui |
| 29/04/2013 03:27 |
@Matworms |
NodeData est considéré comme une "variable" ayant pour valeur le type que tu donnes à l'instanciation de B |
| 29/04/2013 03:27 |
@Matworms |
parce que si tu fais B<NodeData> tu peux plus utiliser NodeData comme le vrai type dans B |
| 29/04/2013 03:27 |
@Matworms |
c'est même pire |
| 29/04/2013 03:26 |
@Matworms |
NodeData* |
| 29/04/2013 03:26 |
@Midhrin |
oui c'est vrai |
| 29/04/2013 03:26 |
@Matworms |
c'est ce que je veux dire |
| 29/04/2013 03:26 |
@Matworms |
tu peux mettre NodeDate ou T, ça change rien |
| 29/04/2013 03:26 |
@Midhrin |
oui fin B<T> extends ... |
| 29/04/2013 03:26 |
@Matworms |
comme le nom du type |
| 29/04/2013 03:26 |
@Matworms |
mais NodeData est considéré comme un nom dans ce cas |
| 29/04/2013 03:26 |
@Midhrin |
oui fin éclipse m'aurais prévenu |
| 29/04/2013 03:26 |
@Matworms |
enfin si |
| 29/04/2013 03:25 |
@Matworms |
et non, c'est une pas une syntaxe valide |
| 29/04/2013 03:25 |
@Matworms |
extends |
| 29/04/2013 03:25 |
@Midhrin |
? |
| 29/04/2013 03:25 |
@Midhrin |
B<NodeData> extend TreeNode<T> |
| 29/04/2013 03:25 |
@Matworms |
(je réfléchis en même temps) |
| 29/04/2013 03:24 |
@Matworms |
je vais donc utiliser B comme étant B<NodeData> |
| 29/04/2013 03:24 |
@Matworms |
j'ai créé une classe NodeData qui stocke des informations |
| 29/04/2013 03:23 |
@Matworms |
T étant le type de data du noeud |
| 29/04/2013 03:23 |
@Midhrin |
jusque là je te suis |
| 29/04/2013 03:23 |
@Matworms |
j'ai donc créé une classe qui étend TreeNode<T> |
| 29/04/2013 03:22 |
@Matworms |
je veux spécialiser cette classe avec de nouvelles fonctionnalités |
| 29/04/2013 03:22 |
@Matworms |
TreeNode<T> |
| 29/04/2013 03:22 |
@Matworms |
A est la classe de base d'un noeud |
| 29/04/2013 03:21 |
@Matworms |
c'est un autre problème ça |
| 29/04/2013 03:21 |
@Midhrin |
en fait je vois pas pourquoi tu veux instancier un nouvel objet de type T dans ta classe |
| 29/04/2013 03:20 |
@Matworms |
mais la classe générique de base permet d'être utilisée avec n'importe quel type |
| 29/04/2013 03:20 |
@Matworms |
ma classe spécialisée n'utilise qu'un seul type |
| 29/04/2013 03:19 |
@Midhrin |
pourquoi tu fait une classe générique si t'as qu'un seul type qui sera utilisé avec ? |
| 29/04/2013 03:18 |
@Matworms |
c'est peut-être plus simple si je peux le forcer dans B |
| 29/04/2013 03:18 |
@Matworms |
'fin, en fait je sais déjà quel type je veux pour T dans ma classe B |
| 29/04/2013 03:17 |
@Midhrin |
ha oui je vois ton problème |
| 29/04/2013 03:17 |
@Matworms |
T est utilisé comme type là |
| 29/04/2013 03:17 |
@Matworms |
j'ai pas de problème pour ça |
| 29/04/2013 03:16 |
@Midhrin |
direct du site oracle |
| 29/04/2013 03:16 |
@Midhrin |
} |
| 29/04/2013 03:16 |
@Midhrin |
public T get() { return t; } |
| 29/04/2013 03:16 |
@Midhrin |
public void set(T t) { this.t = t; } |
| 29/04/2013 03:16 |
@Midhrin |
private T t; |
| 29/04/2013 03:16 |
@Midhrin |
// T stands for "Type" |
| 29/04/2013 03:16 |
@Midhrin |
public class Box<T> { |
| 29/04/2013 03:16 |
@Midhrin |
*/ |
| 29/04/2013 03:16 |
@Midhrin |
* @param <T> the type of the value being boxed |
| 29/04/2013 03:16 |
@Midhrin |
* Generic version of the Box class. |
| 29/04/2013 03:15 |
@Matworms |
j'avais pas compris ta question comme ça |
| 29/04/2013 03:15 |
@Matworms |
je suis en Java 6 |
| 29/04/2013 03:15 |
@Matworms |
Type parameter T cannot be instanciated directly |
| 29/04/2013 03:15 |
@Midhrin |
t'as essayé avec un compilateur 6 ou 7 ? |
| 29/04/2013 03:15 |
@Midhrin |
that's why |
| 29/04/2013 03:14 |
@Matworms |
le compilateur veut pas de cette syntaxe |
| 29/04/2013 03:14 |
@Matworms |
oui |
| 29/04/2013 03:14 |
@Midhrin |
java 5 ? |
| 29/04/2013 03:14 |
@Matworms |
T est un type déterminé au runtime |
| 29/04/2013 03:14 |
@Matworms |
non |
| 29/04/2013 03:14 |
@Midhrin |
; |
| 29/04/2013 03:14 |
@Midhrin |
T truc = new T() |
| 29/04/2013 03:13 |
@Matworms |
mais je vois pas trop comment |
| 29/04/2013 03:13 |
@Matworms |
je voudrais créer une instance de T dans B |