Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13272
| From | "Christian H. Kuhn" <qno-news@qno.de> |
|---|---|
| Newsgroups | de.comp.lang.java |
| Subject | Re: Generics und Wildcards |
| Date | 2019-08-22 13:47 +0200 |
| Message-ID | <gs7dm4Ffp3sU1@mid.individual.net> (permalink) |
| References | <gs4mcmFsqvfU1@mid.individual.net> <qjjvpo$5lj$1@newsreader4.netcologne.de> <gs5jllF3ug4U1@mid.individual.net> <qjlpb9$d39$1@newsreader4.netcologne.de> |
Am 22.08.2019 um 12:04 schrieb Patrick Roemer:
> public static class LSGraph<T> {
> public void findShortestPath(
> final LSElement<T> startNode,
> final LSElement<T> destNode
> ) {
> // ...
> }
> }
>
> public interface LSElement<T, E extends LSElement<T, E>> {
> List<T> findLegalMoves();
> E executeMove(T move);
> }
>
Ausprobiert. Keine Änderung.
LSNode und LSGraph können natürlich nicht einfach ein T mitschleppen.
Das muss schon
LSNode<E extends LSElement<?, E>>
bzw.
LSGraph<E extends LSElement<?, E>>
sein. Und damit habe ich wieder eine Wildcard drin und komme auf die
gleiche Problematik in findShortesPath(startNode, destNode):
final List<?> moves = actNode.getElement().findLegalMoves();
erfordert eine private Hilfsmethode zum wildcard capture. Und hier liefert
private <M> void fspHelper(LSNode<E> actNode, final List<M> moves) {
for (final M move : moves) {
final LSNode<E> newNode = new
LSNode<>(actNode.getElement().executeMove(move));
}
}
wieder den bekannten Fehler
The method executeMove(capture#3-of ?) in the type
LSElement<capture#3-of ?,E> is not applicable for the arguments (M)
> Warum willst Du überhaupt den Parameter von LSElement verstecken?
Ich dachte, das ist offensichtlich. Welche Klasse als Representation
eines Spielzugs benutzt wird, ist implementationsabhängig und am besten
vor den Benutzern zu verstecken. Wenn ich LSElement implementiere und
den Zugtyp an LSGraph etc. übergeben muss, darf ich später, wenn ich die
Klasse des Zugs ändere, nicht nur die Klasse ändern, sondern auch jeden
Code außerhalb. Daher gehört IMHO der Zugtyp eingekapselt.
Gibt es denn nicht sowas wie LSElement.<T>.getClass()?
lg
QNo
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-21 12:57 +0200
Re: Generics und Wildcards Michael Paap <feunews@mpaap.de> - 2019-08-21 16:18 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-21 17:32 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-21 18:06 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-21 19:42 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-21 21:17 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-22 12:04 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-22 13:47 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-22 14:45 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-25 19:36 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-28 22:08 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-29 11:11 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-29 23:56 +0200
Re: Generics und Wildcards Patrick Roemer <sangamon@netcologne.de> - 2019-08-22 15:43 +0200
Re: Generics und Wildcards "Christian H. Kuhn" <qno-news@qno.de> - 2019-08-22 16:55 +0200
csiph-web