001    package generics;
002    
003    public class Interval<T extends Number> {
004            private T start;
005            private T stop;
006            
007            public Interval(T start, T stop){
008                    this.start = start;
009                    this.stop = stop;
010            }
011            public T getStart(){
012                    return start;
013            }
014            
015            public T getStop(){
016                    return stop;
017            }
018            
019            public String toString(){
020                    return "[" + start + ", " + stop + "]";
021            }
022    
023            public double getLength(){
024                    return stop.doubleValue() - start.doubleValue(); 
025            }
026    
027            public static void main(String[] args) {
028                    Interval<Integer> int1 = new Interval<Integer>(0,10);
029                    System.out.println(int1);
030                    System.out.println(int1.getLength());
031                    Interval<Double> int2 = new Interval<Double>(0.345d,10.5d);
032                    System.out.println(int2);
033                    System.out.println(int2.getLength());
034            }
035    }