[ 
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) {
            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}

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

    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());


> 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) {
>             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}



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

Reply via email to