Нестатический внутренний класс может быть создан только в отношении экземпляра внешнего класса. Например, рассмотрим класс:
public class Outer {
class Inner {}
void implicitReferenceToThis() {
new Inner();
}
void explicitReferenceToThis() {
this.new Inner();
}
static void noReferenceToOuter() {
// new Inner(); // doesnt compile
}
static void explictReferenceToOuter() {
new Outer().new Inner();
}
}
Хотя в первом методе, похоже, что для Inner есть конструктор без аргументов, он фактически неявно ссылается на this . Вы можете видеть это, потому что вы не можете использовать тот же код в третьем (статическом) методе.
Действительно, синтаксис может выглядеть немного странным, но второй и четвертый метод демонстрируют, как вызвать конструктор вявный объект.
Как это относится к вашему вопросу, доходит до трассировки стека.
at java.lang.Class.newInstance(Class.java:427)
Похоже, что код пытается создать экземпляр Outer $ Inner с newInstance () , который не может работать, потому что нет ссылки на экземпляр Outer .
Я не уверен, что ожидал бы отображение отражателяобрабатывать внутренние классы из коробки, поэтому я бы не сказал, что это был недостаток в JDBI, но вам, возможно, придется немного поспорить с пользовательским преобразователем или расширить отражающий преобразователь, чтобы заставить это работать на вас.