...
PlantUML Macro |
---|
class Memory {
-List<Object> possibleItems
-List<Object> expectedItems
-int acceptedCount
+Memory(Collection<Object>)
+int getItemCount()
+int getAcceptedCount()
+Object nextItem()
+Boolean acceptItem(Object)
} |
Bruker Object, så alle mulige objekter er tillatt | Code Block |
---|
| Memory memory = new Memory(Arrays.asList("En", "To", "Tre"));
...
Integer userInput = ...
// meningsløst, uten at det gir feil
if (memory.acceptItem(userInput) ... |
|
...
PlantUML Macro |
---|
class Memory<T> {
-List<T> possibleItems
-List<T> expectedItems
-int acceptedCount
+Memory(Collection<T>)
+int getItemCount()
+int getAcceptedCount()
+T nextItem()
+Boolean acceptItem(T)
} |
Introduserer typeparameter T, slik at alle mulige typer kan brukes, men bare en bestemt type for hver instans. | Code Block |
---|
| Memory<String> memory = new Memory<String>(Arrays.asList("En", "To", "Tre"));
...
Integer userInput = ...
// meningsløst, og vil gi typefeil siden acceptItem er spesialisert til String
if (acceptItem(userInput) ... |
| PlantUML Macro |
---|
class Memory<String> {
-List<String> possibleItems
-List<String> expectedItems
-int acceptedCount
+Memory(Collection<String>)
+int getItemCount()
+int getAcceptedCount()
+String nextItem()
+Boolean acceptItem(String)
} |
Effekten av å spesialisere med T=String |
Her er fullstendig kode for klasser:
...