2015-05-10 5 views
-1

Можно ли изменить вывод MyClass.class.getName()? Пример:Можно ли изменить вывод Class.getName()?

public class MyClass { 
} 

public static main(String args[]) { 
    System.out.println(MyClass.class.getName()); 
} 
  1. Выход не должен быть 'MyClass' а 'независимо. Возможно ли это ?
  2. Кроме того: если мы сможем изменить вывод на «все», можем ли мы полностью контролировать вызов Myclass.class.getName(), , аналогичный перезаписи метода?

Почему я спрашиваю: У меня есть программа (которую я не контролирую), который динамически загружает MyClass (MyClassLoader.loadClass('MyClass')) и вызывает MyClass.class.getName().

редактировать: я лучше перефразировать некоторые факты для ясности:

-MyClass загружается динамически с помощью загрузчика классов с Class new_class = loadClass('MyClass'). Я не могу изменить этот код, это не вопрос.

-Следующий, что происходит: System.out.println(new_class.class.getName()) ---> Проблема: Этот вызов идет к java.lang.Class<T>.getName() и, конечно, возвращение «MyClass». Есть ли способ изменить этот выход?

+1

Измените имя класса с 'MyClass' на' whatever'. – fracz

+0

Попробуйте MyClass.getClass(). GetSimpleName(). Вы получите String, Integer или что-то еще. – Suspended

+0

Для удобства имя класса жестко запрограммировано в другой программе. Программа загружает «MyClass». См. Мое редактирование "(которое я не контролирую)" –

ответ

1

Выход не должен быть «MyClass», а «что угодно». Это возможно?

Nope.

Конечно, не в чистой Java.

И я изо всех сил пытаюсь думать о способе, который мог бы быть теоретически возможно использование технологии байт-кода или хакера. (Вы могли бы использовать технику байт-кода для изменения имени классов до something перед загрузкой, но тогда оно не будет загружаться с его старым именем MyClass.)

Одна из причин, по которой эта дверь «закрыта гвоздем», заключается в том, что имена классов тесно связанный с их идентификацией ..., который тесно связан с безопасностью и безопасностью типа времени выполнения Java. Если бы вы могли «взломать» это, было бы опасно, что это может привести к дырам в безопасности.


Совет: подумайте о другом подходе, чтобы у вас не было этого требования.

+0

Ссылка, которую я получил раньше в комментариях, дала мне некоторую надежду, хотя у меня уже было ощущение, что это невозможно. Спасибо за ответ. –

Смежные вопросы