File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+
2+ interface A <T > {
3+ public T get (T a );
4+ }
5+
6+ interface B <T > {
7+ public T get (T b );
8+ }
9+
10+ class C <T > implements A <T >, B <T > {
11+ public T get (T c ) {
12+ return c ;
13+ }
14+ }
15+
16+ class Example6 <T extends A <? extends Number > & B <? extends Number >>{
17+ public static void main (String [] args ) {
18+ A <Number > a = new A <Number >(){
19+ @ Override
20+ public Number get (Number a ) {
21+ return a ;
22+ }
23+ };
24+
25+ System .out .println (a .get (1 ));
26+
27+ B <Integer > b = new B <Integer >(){
28+ @ Override
29+ public Integer get (Integer b ) {
30+ return b ;
31+ }
32+ };
33+
34+ System .out .println (b .get (2 ));
35+
36+
37+ }
38+
39+ // Same for Double, Float,
40+ // Long, Short, Byte,
41+ // Which are extended by Number
42+
43+
44+
45+
46+ }
Original file line number Diff line number Diff line change 1+ import java .io .Serializable ;
2+
3+ interface A1 <T > {
4+ public T get (T a );
5+ }
6+
7+ interface B1 <T > {
8+ public T get (T b );
9+ }
10+
11+ class C1 <T > implements A1 <T >, B1 <T > {
12+ public T get (T c ) {
13+ return c ;
14+ }
15+ }
16+
17+
18+ public class Example7 <T extends A1 <? super Number > & B1 <? super Number >> {
19+
20+ public static void main (String [] args ) {
21+ A1 <Number > a = new A1 <Number >(){
22+ @ Override
23+ public Number get (Number a ) {
24+ return a ;
25+ }
26+ };
27+
28+ System .out .println (a .get (1 ));
29+
30+ B1 <Object > b = new B1 <Object >(){
31+ @ Override
32+ public Object get (Object b ) {
33+ return b ;
34+ }
35+ };
36+
37+ System .out .println (b .get (2 ));
38+
39+
40+ B1 <Serializable > b2 = new B1 <Serializable >() {
41+ @ Override
42+ public Serializable get (Serializable b ) {
43+ return b ;
44+ }
45+ };
46+
47+ System .out .println (b2 .get (3 ));
48+
49+ }
50+
51+
52+
53+ }
You can’t perform that action at this time.
0 commit comments