Написание библиотеки Java для условной обработки класса ввода, не вызывая безусловной зависимости от этого класса во время выполнения

У меня есть, казалось бы, непростая задача по работе с библиотекой Java.

Мне нужно написать класс адаптера/помощника для работы с JTables, который имеет некоторую дополнительную функциональность, если JTable является JXTable. Но я не хочу добавлять runtime зависимость от swingx-core-1.6.2.jar если только мое приложение действительно не использует JXTable (в этом случае уже требуется наличие jar-файла SwingX в classpath)

Как я могу разделить свой код, чтобы добиться этого? Я даже не знаю, как я могу протестировать JXTable; если я попытаюсь использовать instanceof JXTable в качестве теста, это означает, что мой код уже имеет безусловную зависимость от JXTable во время выполнения.

Я и раньше писал библиотеки Java, которые имели "необязательные" зависимости от времени выполнения: если в моей библиотеке есть вот это:

package com.foobar.foolib;

// import from whizbang.jar
import com.whizbang.BloatwareThingy;

public class SuperObject
{
    /* ... uses a BloatwareThingy ... */
}

и SuperObject - единственный класс, который использует whizbang. jar, то пока мое конечное приложение не использует SuperObject, нет никакой зависимости от whizbang.jar; если мое конечное приложение хочет использовать SuperObject, то ему нужно включить whizbang.jar в classpath. Необязательно с точки зрения приложения. Работает отлично.

Как написать метод для проверки того, что заданная JTable является экземпляром JXTable, не требуя зависимости от файла SwingX jar, если приложение использует только JTable?

5
задан Jason S 2 December 2011 в 15:56
поделиться