Why doesn't this code compile?
public class GenericExperiment<T extends Number> {
public void main(String[] args) {
Number five = 5L;
Number six = 6;
GenericExperiment<? extends Number> experiment = new GenericExperiment<>(); //Does not compile
//GenericExperiment<Number> experiment = new GenericExperiment<>(); //Compiles
experiment.addStuff( five, six );
}
void addStuff( T firstNumber, T secondNumber ) {
System.out.println( "The sum is " + firstNumber.intValue() + secondNumber.intValue() );
}
}
If addStuff is defined as taking T, and T is defined as extending Number, why can't I pass in Number objects to it?