Java Reference
In-Depth Information
ssl.add(new Circle(100, 200, 300));
ssl.add(new Circle(10, 20, 30));
}
}
java.lang.Comparable
interface,whichisusedtospecifythe
natural ordering
of
Circle
objects.Theinterface's
compareTo()
methodimplementsthisorderingby
returning a value to reflect the order:
• A negative value is returned if the current object should precede the object
passed to
compareTo()
in some fashion.
• A zero value is returned if the current and argument objects are the same.
• A positive value is returned if the current object should succeed the argument
object.
Circle
'soverriding
compareTo()
methodcomparestwo
Circle
objectsbased
ontheirradii.Thismethodordersa
Circle
instancewiththesmallerradiusbeforea
Circle
instance with a larger radius.
The
SortedShapesList
class specifies
<S extends
Shape&Comparable<S>>
asitsparameterlist.Theactualtypeargumentpassedto
the
S
parameter must subclass
Shape
, and it must also implement the
Comparable
interface.
Note
A type parameter bound that includes the type parameter is known as a
recursive type bound
. For example,
Comparable<S>
in
S extends
Shape&Comparable<S>
isarecursivetypebound.Recursivetypeboundsarerare
andtypicallyshowupinconjunctionwiththe
Comparable
interface,forspecifying
a type's natural ordering.
Circle
satisfiesbothcriteria:itsubclasses
Shape
andimplements
Comparable
.
Asaresult,thecompilerdoesnotreportanerrorwhenitencountersthe
main()
meth-
od's
SortedShapesList<Circle> ssl = new SortedShapesList<>();
statement.
Anupperboundoffersextrastatictypecheckingthatguaranteesthataparameterized
typeadherestoitsbounds.Thisassurancemeansthattheupperbound'smethodscanbe
calledsafely.Forexample,
sort()
cancall
Comparable
's
compareTo()
method.
Ifyourunthisapplication,youwilldiscoverthefollowingoutput,whichshowsthat
the two
Circle
objects are sorted in ascending order of radius: