implementer interface list en généric
Bonjour,
je dois développer une classe ObjectArray qui est une sous classe d'un classe Cluster dont le code est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package shiptrafficcontrol;
public class Cluster<E> {
//@ invariant 0 <= count &&
//@ (\forall int i,j;
//@ 0 <= i && i < items.size() && 0 <= j && j < items.size() && i < j;
//@ (items.get(i) != null && items.get(j) != null) ==> !items.get(i).equals(items.get(j)));
protected /*@spec_public */ java.util.ArrayList<E> items;
protected /*@spec_public */ static final int capacity=10;
protected /*@spec_public */ int count = 0;
/** Creates a new instance of Cluster */
public Cluster(){
items = new java.util.ArrayList<E>(capacity);
count = 0;
}
public /*@ pure */ boolean contains(E item){
return items.contains(item);
}
//@ ensures \result <==> (count == 0);
public /*@ pure */ boolean isEmpty(){
return (count == 0);
}
//@ ensures \result <==> (count == capacity);
public /*@ pure */ boolean isFull(){
return (count == capacity);
}
//@ requires !isEmpty();
//@ ensures \result == null || items.contains(\result);
public /*@ pure */ E pickOne(java.util.Random random){
return items.get(random.nextInt(items.size()));
}
public /*@ pure */ String toString(){
return items.toString();
}
} |
et de plus cette classe ObjectArray doit implementer l'interface java.util.list
voici ce que j'ai fais:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| /*
* ObjectArray.java
*
* Created on 13 octobre 2006, 23:57
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package shiptrafficcontrol;
import java.util.*;
/**
*
* @author Nicolas
*/
public class ObjectArray extends Cluster implements List{
/** Creates a new instance of ObjectArray */
public ObjectArray() {
super();
}
//to overide from cluster
//public String toString();
public int size() {
return items.size();
}
public Iterator<Object> iterator() {
return items.iterator();
}
public Object[] toArray() {
return(items.toArray());
}
public boolean add(Object o ) {
items.add(o);
}
public boolean remove(Object o) {
return(items.remove(o));
}
public boolean containsAll(Collection<Object> c ) {
return(items.containsAll(c));
}
public boolean addAll(Collection<Object> c ) {
return(items.addAll(c));
}
public boolean addAll(int i , Collection<Object> c) {
return(items.addAll(i,c));
}
public boolean removeAll(Collection<Object> c ) {
return(items.removeAll(c));
}
public void clear() {
items.clear();
}
public Object get(int i) {
return(items.get(i));
}
public Object set(int i, Object o) {
return(items.set(i,o));
}
public void add(int i, Object o) {
items.add(i,o);
}
public Object remove(int i) {
return(items.remove(i));
}
public int indexOf(Object o) {
return(items.indexOf(o));
}
public int lastIndexOf(Object o) {
return(items.lastIndexOf(o));
}
public ListIterator<Object> listIterator() {
return(items.listIterator());
}
public ListIterator<Object> listIterator(int i) {
return(items.listIterator(i));
}
public List<Object> subList(int i, int j) {
return(items.subList(i,j));
}
public Object[] toArray(Object o[]) {
return(items.toArray(o));
}
public boolean contains(Object o) {
return(items.contains(o));
}
public boolean retainAll(Collection<Object> c ) {
return(items.retainAll(c));
}
} |
le probleme c'est que je voudrais utiliser un type généric (E) mais des que je remplace Object par "E" ,le compilateur ne trouve pas ce type E, pourtant objectArray est une sous classe de Cluster qui implemente le type E
de plus j'ai une erreur à la compilation, comme quoi je n'implemente pas tout les méthodes de l'interface, pourtant c'est le cas....
Code:
1 2 3 4 5 6 7 8
| deps-jar:
Compiling 7 source files to /Users/Nicolas/Documents/IY/Object & Component Technology/ASSIGNMENTS/ShipTrafficControlSystem/build/classes
/Users/Nicolas/Documents/IY/Object & Component Technology/ASSIGNMENTS/ShipTrafficControlSystem/src/shiptrafficcontrol/ObjectArray.java:18: shiptrafficcontrol.ObjectArray is not abstract and does not override abstract method retainAll(java.util.Collection) in java.util.List
public class ObjectArray extends Cluster implements List{
Note: /Users/Nicolas/Documents/IY/Object & Component Technology/ASSIGNMENTS/ShipTrafficControlSystem/src/shiptrafficcontrol/ObjectArray.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
BUILD FAILED (total time: 1 second) |
Can you help pliiiiiiiiiise ???:cry:
Nicolas