Вам потребуется class
файл для того, чтобы реально использовать класс, но это не значит, что вам понадобится исходный файл.
Давайте рассмотрим возможности, используя примеры классов Dog
и Animal
. Предполагая, что Dog
класс является подклассом Animal
класса, мы можем сделать следующее:
Если у вас есть и Animal.class
и Animal.java
, вы можете сделать Dog
класс.
Если у вас есть Animal.class
, но не Animal.java
, вы можете сделать класс Dog
.
Если у вас нет Animal.class
, но у нас есть Animal.java
, вы можете сделать класс Dog
. (Это означает, что файл Animal.java
нужно будет скомпилировать, когда файл Dog.java
компилируется.)
Если вы не имеете ни Animal.class
, ни Animal.java
, вы не можете сделать Dog
класс.
Вот версия табличной выше:
Have Animal.java? Have Animal.class? Can make Dog class?
----------------- ------------------ -------------------
Yes Yes --> Yes
Yes No --> Yes
No Yes --> Yes
No No --> No
Если у вас есть файл class
, есть программы, которые могут декомпилировать файл class
для получения java
исходного файла удобочитаемого, однако , он не будет восстанавливать точный источник, который использовался для создания файла class
.
Однако в этом случае, если необходимо, необходимо расширить класс Animal
, чтобы создать новый класс Dog
, исходный код сам по себе не нужен.
Помните об этом - всякий раз, когда класс создается на Java, он всегда расширяет класс Object
. Даже если у нас нет доступа к исходному коду класса Object
, поскольку у нас есть доступ к Object.class
в Java, мы можем создавать собственные классы.
Этот случай аналогичен - если у нас есть файл class
для класса, мы можем использовать его в полной мере. Единственное, чего не хватает, это фактическая реализация, указанная в исходном коде.
Вам не нужны другие классы для декомпиляции. – shodanex