No se asumen los paquetes porque la filosofía de Java es que es mejor ser explícito que implícito/supuesto.
Le da la posibilidad de acceder a cualquier cosa en su paquete actual, pero cualquier elemento externo debe ser importado explícitamente. (Creo que Java.lang es la excepción porque contiene tanta funcionalidad base como String que no habría un solo paquete que no la usaría).
Esta es también la razón por la que se mire:
import java.util.ArrayList;
import java.util.LinkedList;
en lugar de:
import java.util.*;
Esto puede parecer molesto, hasta el día en que están tratando de averiguar alguien código vigilara y golpea usted cuánto más difícil sería si las cosas estuvieran ocultas/implícitas.
Si usa Eclipse, Netbeans o IntelliJ, nunca lo notará debido a dos características.
En primer lugar, si presiona ctrl-space en medio de escribir un nombre de clase, no solo completará el nombre de la clase, sino que también lo agregará automáticamente a la lista de importaciones.
En segundo lugar, si alguna vez llega a donde las importaciones son "Incorrectas" o no utiliza la expansión ctrl-space, puede simplemente escribir ctrl-shift-o (eclipse) para tener "Fix imports". Esto importará automáticamente cosas que necesitan importar y eliminar importaciones que ya no necesita. Dependiendo de su configuración, también expandirá o colapsará * 's.
Una vez que obtenga un sistema inactivo, nunca considerará las importaciones.
AFAIK el nombre del paquete siempre es redundante. Simplemente intente cambiar 'com.mypackage.stuff' por * anything * else y compilarlo sin cambiar' CLASSPATH'. – maaartinus