Ho ciò che sembra un'attività di una libreria Java ingannevole.Scrittura di una libreria Java per gestire in modo condizionale una classe di input senza causare una dipendenza di runtime incondizionata su tale classe
Ho bisogno di scrivere una classe adattatore/helper per lavorare con JTable
s che ha alcune funzionalità aggiuntive se il JTable
è un JXTable
. Ma io non voglio aggiungere una dipendenza runtime su swingx-core-1.6.2.jar meno la mia applicazione utilizza in realtà JXTable (nel qual caso si richiede già avere il file jar SwingX sul classpath)
Come posso disaccoppiare il mio codice per realizzare questo? Non so nemmeno come posso testare per JXTable; se provo a usare instanceof JXTable
come test, significa che il mio codice ha già una dipendenza di runtime incondizionata su JXTable.
ho scritto prima di librerie Java che hanno dipendenze linkage runtime "opzionali": se ho questo nella mia biblioteca:
package com.foobar.foolib;
// import from whizbang.jar
import com.whizbang.BloatwareThingy;
public class SuperObject
{
/* ... uses a BloatwareThingy ... */
}
e SuperObject
è l'unica classe che utilizza whizbang.jar, quindi fintanto la mia applicazione finale non utilizza SuperObject
, quindi non esiste alcuna dipendenza di runtime su whizbang.jar; se la mia applicazione finale desidera utilizzare SuperObject
, è necessario includere whizbang.jar sul classpath. Opzionale dal punto di vista dell'applicazione. Funziona alla grande.
Come posso scrivere un metodo per verificare che una determinata tabella J sia un'istanza di JXTable, senza richiedere una dipendenza dal file jar SwingX se l'applicazione utilizza solo JTable?
Non è un tempo di compilazione dipendenza che sto cercando di eliminare; Intendo che la mia libreria abbia una dipendenza in fase di compilazione su SwingX. Non voglio solo una dipendenza * runtime * su SwingX a meno che anche la mia applicazione non funzioni. –