У меня есть что-то вроде сложной задачи библиотеки Java.
Мне нужно написать класс адаптера / помощника для работы с JTable
s, который имеет некоторые дополнительные функции, если JTable
это JXTable
. Но я не хочу добавлять зависимость времени выполнения от swingx-core-1.6.2.jar , если мое приложение фактически не использует JXTable (в этом случае оно уже требует наличия файла jar SwingX в пути к классам)
Как я могу отделить свой код для достижения этой цели? Я даже не знаю, как я могу проверить на 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, не требуя зависимости от файла jar SwingX, если приложение использует только JTable?