Java: Wrapper para clases en el default package

Si tu proyecto en Java tiene una clase que no pertenece a ningún paquete (no posee al principio la sentencia “package…”), entonces pertenece al default package. Si intentan utilizar esa clase desde otra clase sin paquete no hay problemas, pero es imposible hacerlo (a partir de java 1.4) desde clases que sí pertenecen a algún paquete. Averiguar esto me llevó gran parte de la tarde. Ya veo que le pifié en algo y la cosa era mucho mas sencilla…

Bueno, ese es el problema con la clase Calculador que proveyó la cátedra de Inteligencia Artificial. No tiene paquete. Si ya se armaron todo su código ordenadito en paquetes no van a poder utilizarla. Sólo se puede desde una clase sin paquete… pero queda muy desordenado poner todas las clases en un mismo paquete, y además no es recomendado.

Pero hay una solución. Podemos seguir teniendo nuestro proyecto ordenado y utilizar esta bendita clase.


Lo que pueden hacer los profesores directamente es ponerle un paquete a la clase Calculador y armar un jar. Es lo más fácil, obvio… pero esto que voy a mencionar aquí es útil para cuando encuentren un archivo .class sin su código fuente, el programador no incluyó la clase en un paquete, es imposible contactar a esta persona o no quiere cambiarlo, y tienen su proyecto organizado con una jerarquía de paquetes (sí, se tienen que dar todas estas condiciones 😀 Es poco probable pero esto me divirtió toda la tarde).

Como dije antes, Java 1.4 y superiores no permiten importar clases del default package desde clases que sí pertenecen a uno. Entonces lo que se puede hacer es armar un wrapper, compilar con java 1.3 (que sí permite importar estas clases) y utilizar el wrapper en nuestro proyecto. No hace falta bajarse el jdk viejo… ésta página soluciona nuestros problemas.

Les dejo a disposición de ustedes un archivo jar que al importar en su proyecto pueden comenzar a utilizar el Calculador del TP (las clases Calculador y Pair se traducen a CalculadorWrapper y PairWrapper), hasta que los profesores liberen una versión corregida.

Si ejecutan java -jar CalculadorWrapper.jar les tira por pantalla una prueba de los métodos de la clase.