Tengo lo que parece una tarea difícil de la biblioteca Java.Escribir una biblioteca Java para manejar condicionalmente una clase de entrada sin causar dependencia en el tiempo de ejecución incondicional en esa clase
Tengo que escribir una clase/ayudante adaptador para trabajar con JTable
s que tiene algunas funciones adicionales si el JTable
es una JXTable
. Pero yo no quiero agregar una dependencia de tiempo de ejecución en SwingX-core-1.6.2.jar menos que mi aplicación utiliza realmente JXTable (en cuyo caso se requiere ya que tiene el archivo jar SwingX en la ruta de clase)
Cómo ¿Puedo desacoplar mi código para lograr esto? Ni siquiera sé cómo puedo probar JXTable; si trato de usar instanceof JXTable
como una prueba, eso significa que mi código ya tiene una dependencia de tiempo de ejecución incondicional en JXTable.
He escrito bibliotecas de Java antes de que se han "opcionales" dependencias de enlace en tiempo de ejecución: si tengo esto en mi biblioteca:
package com.foobar.foolib;
// import from whizbang.jar
import com.whizbang.BloatwareThingy;
public class SuperObject
{
/* ... uses a BloatwareThingy ... */
}
y SuperObject
es la única clase que utiliza whizbang.jar, a continuación, siempre y cuando mi aplicación final no usa SuperObject
, entonces no hay dependencia de tiempo de ejecución en whizbang.jar; si mi aplicación final desea usar SuperObject
, entonces debe incluir whizbang.jar en classpath. Opcional desde el punto de vista de la aplicación. Funciona genial.
¿Cómo puedo escribir un método para probar que una JTable determinada sea una instancia de JXTable, sin requerir una dependencia en el archivo jar SwingX si la aplicación solo utiliza JTable?
No es un tiempo de compilación dependencia que estoy tratando de eliminar; Tengo la intención de que mi biblioteca tenga una dependencia en tiempo de compilación en SwingX. Simplemente no quiero una dependencia de * runtime * en SwingX a menos que mi aplicación también lo haga. –