Hoi,
ben voor het eerst bezig met java en generics. Zie onderstaand stukje code. Het gaat om een interface voor een Tree class, en een AbstractTree die alvast wat triviale functionaliteit implementeert.
Ik krijg een "unchecked conversion" bij het compileren, verder lijkt het compileren wel goed te gaan, maar mijn vraag is of ik hier iets aan kan/moet doen of dat de code gewoon correct is.
(Overigens heb ik ervoor gekozen om zowel een interface als een abstracte class te gebruiken, zodat ik ook Tree implementaties kan maken die heel anders werken dan AbstractTree. Ondertussen hoef ik dan voor classes die wel van AbstractTree erven, geen code te dupliceren....)
ben voor het eerst bezig met java en generics. Zie onderstaand stukje code. Het gaat om een interface voor een Tree class, en een AbstractTree die alvast wat triviale functionaliteit implementeert.
Ik krijg een "unchecked conversion" bij het compileren, verder lijkt het compileren wel goed te gaan, maar mijn vraag is of ik hier iets aan kan/moet doen of dat de code gewoon correct is.
(Overigens heb ik ervoor gekozen om zowel een interface als een abstracte class te gebruiken, zodat ik ook Tree implementaties kan maken die heel anders werken dan AbstractTree. Ondertussen hoef ik dan voor classes die wel van AbstractTree erven, geen code te dupliceren....)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| interface Tree<E> { public E get(); public boolean isLeaf(); public Tree getParent(); public ArrayList<Tree<E>> getChildren(); public Iterator<Tree<E>> iterator(); } abstract class AbstractTree<E> implements Tree{ protected E element; protected AbstractTree<E> parent; public AbstractTree( E el ){ element = el; parent = null; } protected AbstractTree( E el, AbstractTree<E> p ){ element = el; parent = p; } public E get(){ return element; } public Tree getParent(){ return parent; } // Warning hier: "try.java": [unchecked] unchecked conversion; // found: java.util.Iterator, // required: java.util.Iterator<tryout.AbstractTree<E>> public Iterator<AbstractTree<E>> iterator(){ return getChildren().iterator(); }; } |