Я пытаюсь изучить (на уровне байт-кода, ASM) классы, реализующие некоторые конкретные интерфейсы (в данном случае java.sql.Connection), и обнаружил, что в некоторых случаях библиотека имеет другой интерфейс, расширяющий что-то из моего набора интерфейсов ... и затем их классы реализуют интерфейс THAT. (В этом случае новый расширенный интерфейс com.mysql.jdbc.Connection расширяет java.sql.Connection, а затем их реализации, например, ConnectionImpl реализует com.mysql.jdbc.Connection.) Поэтому я пропускаю идентификацию ConnectionImpl в качестве целевого класса.Есть ли способ узнать, является ли класс интерфейсом?
Итак, результатом является то, что при загрузке класса мне нужно идентифицировать com.mysql.jdbc.Connection как «интересный» интерфейс. Но я не вижу, как определить класс AS как интерфейс, а не только обычный класс. Есть ли что-то в ClassReader, чем может дать мне такую информацию?
В конце концов, я думаю, что я был занят. Даже если бы я мог это сделать, нет ничего, чтобы убедиться, что интерфейс действительно загружен перед классом. Например, из того, что я вижу, ConnectionImpl загружается перед mysql.jdbc.Connection, и поэтому мне не известно, что ConnectionImpl действительно реализует java.sql.Connection. – ticktock