Java узнайте, что импортирует .class

Есть ли способ узнать, какой импорт имеет класс?

В этом вопросе: Джон Скит говорит, что вы не можете сделать это с помощью отражения, но

Если вы хотите найти все типы, используемые в скомпилированном коде, это немного другое дело. Возможно, вы захотите взглянуть на BCEL как на способ анализа байт-кода.

Это то, что я хочу знать, как это сделать.


person LanguagesNamedAfterCofee    schedule 18.07.2012    source источник
comment
См. stackoverflow.com/questions/5701305/   -  person nolegs    schedule 18.07.2012
comment
@nolegs Я отредактировал свой вопрос, чтобы отразить ваш комментарий   -  person LanguagesNamedAfterCofee    schedule 18.07.2012
comment
Вы имеете в виду в коде (как при использовании отражения) или только из файла класса (с использованием декомпилятора или подобного?)   -  person Michael Berry    schedule 18.07.2012
comment
Классы хранятся в таблице констант .class с соответствующим типом. Есть одно предостережение: импортированные константы static final копируются, так что импорт их класса может отпасть. (По крайней мере, так было в Sun Java.)   -  person Joop Eggen    schedule 18.07.2012
comment
См. также stackoverflow.com/questions/3734825/   -  person earcam    schedule 23.04.2017
comment
Как вы уже знаете, вы не можете найти импорт, почему ваш заголовок и ваше первое предложение все равно спрашивают об этом? Пожалуйста, исправьте их, чтобы они соответствовали тому, что вы на самом деле просите.   -  person user207421    schedule 28.08.2017


Ответы (2)


Вот старое руководство по инфраструктуре манипулирования байт-кодом ASM, объясняющее как читать зависимости классов с помощью ASM.

person Eugene Kuleshov    schedule 18.07.2012
comment
Ссылки не работают (поэтому ответы не должны быть просто ссылками!). Архив: https://web.archive.org/web/20151231173739/http://asm.ow2.org/doc/tutorial-asm-2.0.html - person NateS; 30.09.2018

Вы можете использовать декомпилятор Java, подобный этому: декомпилятор Java

person Baz    schedule 18.07.2012