Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6253608

Unable to override method with covariant return type using -source 1.4

XMLWordPrintable

    • Cause Known
    • generic
    • generic

      $ cat -n Tiger.java
           1 class Super {
           2 Number method() {
           3 return 1;
           4 }
           5 }
           6
           7 class Tiger extends Super {
           8 Integer method() {
           9 return 1;
          10 }
          11 }
      $ cat -n Mantis1.java
           1 class Mantis1 extends Tiger {
           2 Integer method() {
           3 return new Integer(1);
           4 }
           5 }
      $ cat -n Mantis2.java
           1 class Mantis2 extends Tiger {
           2 Number method() {
           3 return new Integer(1);
           4 }
           5 }
      $ /usr/java/jdk1.5.0/bin/javac -J-showversion -sourcepath /xyz Tiger.java
      java version "1.5.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
      Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
       
      $ /usr/java/jdk1.5.0/bin/javac -J-showversion -sourcepath /xyz -source 1.4 Mantis1.java
      java version "1.5.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
      Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
       
      Mantis1.java:2: warning: method() in Mantis1 overrides method() in Tiger; overridden method is a bridge method
          Integer method() {
                  ^
      Mantis1.java:2: method() in Mantis1 cannot override method() in Tiger; attempting to use incompatible return type
      found : java.lang.Integer
      required: java.lang.Number
          Integer method() {
                  ^
      1 error
      1 warning
      $ /usr/java/jdk1.5.0/bin/javac -J-showversion -sourcepath /xyz -source 1.4 Mantis2.java
      java version "1.5.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
      Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
       
      Mantis2.java:2: warning: method() in Mantis2 overrides method() in Tiger; overridden method is a bridge method
          Number method() {
                 ^
      Mantis2.java:2: method() in Mantis2 cannot override method() in Tiger; attempting to use incompatible return type
      found : java.lang.Number
      required: java.lang.Integer
          Number method() {
                 ^
      1 error
      1 warning

      ###@###.### 2005-04-11 21:54:00 GMT

            Unassigned Unassigned
            ahe Peter Ahe
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Imported:
              Indexed: