I must confess that I see the point for the simple cases. In Java 1.4 the code for finding payments over a certain limit in a list of Payments would look like this:
public List findAllPaymentsOverLimit(List payments,
int limit)
{
List overLimitPayments = new ArrayList();
for(Iterator each = payments.iterator(); each.hasNext(); ) {
Payment payment = (Payment) each.next();
if (payment.amount > limit)
overLimitPayments.add(payment);
}
return overLimitPayments;
}
And the bad thing is that we've all gotten used to that horrible casting syntax. With Java 5 we could change this function to something like this:
public List<Payment> findAllPaymentsOverLimit(
List<Payment> payments,
int limit)
{
List<Payment> overLimitPayments
= new ArrayList<Payment>();
for (Payment payment : payments) {
if (payment.amount > limit)
overLimitPayments.add(payment);
}
return overLimitPayments;
}
And that's much better, right?
My problem is with the more advanced uses of this new tool. I'll admit that I haven't fully understood this, but if you want to create code that must accept a typed collection or even worse a map, you'll have to learn the more advanced syntax where
List<? extends Class>or
List<? super Class>
This is where it gets hairy, and where I start to think it might just not be worth it. On the other hand, I could leave that problem to the framework makers.
No comments:
Post a Comment