Discussion:
Bug bei Typ-Annotationen auf Klassen-Typ-Parameter-Bounds
(zu alt für eine Antwort)
Heiner Kücker
2016-10-13 19:38:59 UTC
Permalink
Hallo,

ich habe mich relativ umfangreich damit befasst, einen Prüfer für Java8-Programme zu entwickeln.

In diesem Rahmen habe ich mich mit den Typ-Annotationen (JSR 308) beschäftigt.

Ich finde die Typ-Annotationen (JSR 308) zwar nicht besonders gut, aber die gehören zu Java8 nun mal dazu.

Unter anderem kann man die Typ-Annotationen an Typ-Parametern und deren Bounds notieren.

public class TestTypeAnnotationOnClassTypeparamBound<
@TypeAnno00 T_EXT_INTERSECTION extends
@TypeAnno01 List<
@TypeAnno02 String > &
@TypeAnno03 Iterable<
@TypeAnno04 String > &
@TypeAnno05 Serializable
{
}

Bei T_EXT_INTERSECTION handelt es sich um einen


Ich habe dazu mal einen Unit-Test gemacht (JUnit4):

TypeAnnotationOnClassTypeparamWildcard1OverReflectionTest

http://control-and-command.de/zip/JAVA8_TYPE_ANNO_BUG.zip

Weder mit dem Eclipse-Compiler noch mit dem jdk1.8.0_102 javac funktioniert dieser Test.

Scheinbar haben die Compiler-Anbieter keine Tests hierzu.

Die Typ-Annotationen waren neben den Haupt-Java8-Themen wie Lambdas, Streams und default-Methoden in Interfaces nur eine Nebensache.

Andererseits sind es nur Meta-Daten, die geparst, im Byte-Code vermerkt und wieder abgefragt werden müssen, nichts kompliziertes wie Optimierung oder Typ-Inferenz.

Im Netz findet man auch einige getrackte Bugs in diesem Umfeld.

https://www.google.de/search?q=java+bug+type+annotation+on+class+type+parameter+intersection+bound

https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwiQrrK8w9jPAhWDjSwKHQ3LAscQFggxMAI&url=https%3A%2F%2Fbugs.eclipse.org%2Fbugs%2Fshow_bug.cgi%3Fid%3D462083&usg=AFQjCNEEkF0KsnBbdp2WcaYyVGHx7cLj9Q&sig2=KqkPYovFkv5VqgeM-JPdlw

https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiZ0dD_w9jPAhXBDiwKHf69CNQQFghWMAc&url=http%3A%2F%2Ftypes.cs.washington.edu%2Fchecker-framework%2Fcurrent%2Fchangelog.txt&usg=AFQjCNESdEMTut2sVzfbGctMVUSGPTXj5g&sig2=F8JX8xUARXDQO6dzd8yGRQ&bvm=bv.135475266,d.bGghttps://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwiZ0dD_w9jPAhXBDiwKHf69CNQQFghWMAc&url=http%3A%2F%2Ftypes.cs.washington.edu%2Fchecker-framework%2Fcurrent%2Fchangelog.txt&usg=AFQjCNESdEMTut2sVzfbGctMVUSGPTXj5g&sig2=F8JX8xUARXDQO6dzd8yGRQ&bvm=bv.135475266,d.bGg


Meine Frage ist nun, wo ich einen entsprechenden Bug einstellen sollte,
Oracle, Open JDK oder Eclipse, und ob sich dies überhaupt lohnt?

Danke
Heiner
Heiner Kücker
2016-10-13 19:41:40 UTC
Permalink
Post by Heiner Kücker
Im Netz findet man auch einige getrackte Bugs in diesem Umfeld.
https://www.google.de/search?q=java+bug+type+annotation+on+class+type+parameter+intersection+bound&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=FeL_V9a7Ncjj8weU86qwCg#q=javac+bug+type+annotation
Post by Heiner Kücker
Danke
Heiner
Heiner Kücker
2016-10-13 19:43:27 UTC
Permalink
Post by Heiner Kücker
public class TestTypeAnnotationOnClassTypeparamBound<
@TypeAnno00 T_EXT_INTERSECTION extends
@TypeAnno01 List<
@TypeAnno02 String > &
@TypeAnno03 Iterable<
@TypeAnno04 String > &
@TypeAnno05 Serializable
{
}
Bei T_EXT_INTERSECTION handelt es sich um einen Type-Parameter mit intersection bound, wobei der Typ-Parameter selbst, alle einzeln intersected bounds und deren Typ-Argumente jeweils eine Typ-Annotation haben.
Post by Heiner Kücker
Danke
Heiner
Lesen Sie weiter auf narkive:
Loading...