Studying Java, I’ve thought about a, to me, rather confusing property of many tutorials. Consider the following two imports from a sample tutorial:
import java.awt.*;
import java.awt.event.*;
The first line obviously imports the java.awt package, and the second one awt’s subpackage. But shouldn’t the asterix include all sub-packages? Hence, line one should do the trick – line two shouldn’t be needed? If it doesn’t: then what’s the true purpose/usage of the asterix?
For example, using SELECT * FROM foo in MySQL selects ALL fields from a table, perhaps I’m stupid to assume that this naturally is t he case.
No, packages are taken as a whole. Even though it’s often useful to think of them hierarchically, there is no notion within the Java language or compilation that says
java.awt.eventbelongs tojava.awt.Your comparison with SQL tables isn’t quite right because there’s no such thing as a sub-table in SQL databases. Instead, imagine you had a table representing all your classes, with the following entries:
Now, if you wanted to get awt classes, you’d say:
You wouldn’t expect this to give you both entries, just because the package name starts with
awt, would you?