[ 
https://issues.apache.org/jira/browse/LANG-1674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Baljit Singh updated LANG-1674:
-------------------------------
    Description: 
The constructors for {{org.apache.commons.lang3.Range}} don't play nicely with 
abstract classes. Example:
{quote}static abstract class AbstractComparable implements 
Comparable<AbstractComparable> {
 @Override
 public int compareTo(AbstractComparable o)
Unknown macro: \{ throw new UnsupportedOperationException(); }
}

static class DerivedA extends AbstractComparable {
 }

static class DerivedB extends AbstractComparable {
 }

// valid, but reasonable since AbstractComparable is the common parent
 static final Range<AbstractComparable> RANGE_MIXED = Range.between(new 
DerivedA(), new DerivedB());

// valid, but unreasonable to force usage of parent class
 static final Range<AbstractComparable> RANGE_SAME_CLASS = Range.between(new 
DerivedA(), new DerivedA());

// compiler error
 static final Range<DerivedA> RANGE_A = Range.between(new DerivedA(), new 
DerivedA());
{quote}

  was:
The constructors for {{org.apache.commons.lang3.Range}}  don't play nicely with 
abstract classes. Example:

{quote}    static abstract class AbstractComparable implements 
Comparable<AbstractComparable> {
        @Override
        public int compareTo(AbstractComparable o) {
            throw new UnsupportedOperationException();
        }
    }

    static class DerivedA extends AbstractComparable {
    }


    static class DerivedB extends AbstractComparable {
    }

    // valid, but reasonable since AbstractComparable is the common parent
    static final Range<AbstractComparable> RANGE_MIXED = Range.between(new 
DerivedA(), new DerivedB());

    // valid, but unreasonable to force usage of parent class
    static final Range<AbstractComparable> RANGE_SAME = Range.between(new 
DerivedA(), new DerivedA());

    // compiler error
    static final Range<DerivedA> RANGE_A = Range.between(new DerivedA(), new 
DerivedA());{quote}


> Range construction with abstract/derived classes
> ------------------------------------------------
>
>                 Key: LANG-1674
>                 URL: https://issues.apache.org/jira/browse/LANG-1674
>             Project: Commons Lang
>          Issue Type: Improvement
>            Reporter: Baljit Singh
>            Priority: Minor
>
> The constructors for {{org.apache.commons.lang3.Range}} don't play nicely 
> with abstract classes. Example:
> {quote}static abstract class AbstractComparable implements 
> Comparable<AbstractComparable> {
>  @Override
>  public int compareTo(AbstractComparable o)
> Unknown macro: \{ throw new UnsupportedOperationException(); }
> }
> static class DerivedA extends AbstractComparable {
>  }
> static class DerivedB extends AbstractComparable {
>  }
> // valid, but reasonable since AbstractComparable is the common parent
>  static final Range<AbstractComparable> RANGE_MIXED = Range.between(new 
> DerivedA(), new DerivedB());
> // valid, but unreasonable to force usage of parent class
>  static final Range<AbstractComparable> RANGE_SAME_CLASS = Range.between(new 
> DerivedA(), new DerivedA());
> // compiler error
>  static final Range<DerivedA> RANGE_A = Range.between(new DerivedA(), new 
> DerivedA());
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to