У меня есть, казалось бы, непростая задача по работе с библиотекой Java.
Мне нужно написать класс адаптера/помощника для работы с JTable
s, который имеет некоторую дополнительную функциональность, если 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?