[ 
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>
Unknown macro: \{ @Override public int compareTo(AbstractComparable o) Unknown 
macro}
}

static class DerivedA extends AbstractComparable {
 }

static class DerivedB extends AbstractComparable {
 }

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

// compilers, 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)
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}


> 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>
> Unknown macro: \{ @Override public int compareTo(AbstractComparable o) 
> Unknown macro}
> }
> static class DerivedA extends AbstractComparable {
>  }
> static class DerivedB extends AbstractComparable {
>  }
> // compiles, and reasonable since AbstractComparable is the common parent
>  static final Range<AbstractComparable> RANGE_MIXED = Range.between(new 
> DerivedA(), new DerivedB());
> // compilers, 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