Хорошо, с чего начать?
Me относится к внутри текущего объекта.
Например, Форма, Класс или другой Объект. Me - сокращение и не работает как указатель в C.
Если вы действительно хотите скопировать свойства двух классов, вы должны либо реализовать .Copy Sub, либо сделать это вне класса.
Вы пробовали
Public Function CopyAnObject(ByVal Source as Object) as Object
CopyAnObject = Source
End Function
Я не совсем понимаю, каким может быть использование, но похоже, что вы пытаетесь взломать что-то, что не стоит взламывать?
[117 ] Может ли ОП предоставить больше информации о того, чего он / она хочет достичь ?
Если вы действительно отчаянно хотите взломать его, преобразуйте весь класс в IO.MemoryStream и взломайте это оттуда.
Возможно, Вы могли использовать Аспектно-ориентированное программирование, чтобы захватить вызовы к той функции и возвратить Вашу собственную версию вместо этого?
Spring предлагает некоторую функциональность AOP, но существуют другие библиотеки, которые делают это также.
Одно ужасное решение состояло бы в том, чтобы поместить Вашу собственную реализацию DefaultWidget (с тем же FQCN) раньше Путь к классу, чем нормальная реализация. Это - ужасный взлом, но любой подход, о котором я могу думать, еще хуже.
Просто моя идея понятия,
Возможно, что используют AOP, с разработкой байт-кода путь, для введения аспекта к calculateHeight методу.
Затем можно включить Вам патч ThreadLocal или иначе переменной.
Только предложения я могу думать:
Выройте через библиотеку API, чтобы видеть, существует ли некоторый способ переопределить значения по умолчанию и измерить. Калибровка может сбивать с толку в колебании (по крайней мере, мне), setMinimum, setMaximum, setdefault, setDefaultOnThursday.... Возможно, что существует путь. Если можно связаться с разработчиком (разработчиками) библиотеки, Вы могли бы найти ответ, который облегчит потребность в неприятном взламывании.
Возможно, расширьте фабрику, только переопределяющую некоторый параметр калибровки значения по умолчанию? зависит от фабрики, но это могло бы быть возможно.
Создание класса с тем же именем могло бы быть единственной другой опцией, поскольку другие указали, что это ужасно, и Вы склонны забыть, что это и повреждение наполняет, когда Вы обновляете библиотеку API или развертываетесь в другой среде и забываете, почему Вам настраивали путь к классу тот путь.
Объектно-ориентированный способ сделать это состоял бы в том, чтобы создать обертку, реализовав IWidget, делегировав все вызовы к фактическому виджету, кроме calculateHeight, чего-то как:
class MyWidget implements IWidget {
private IWidget delegate;
public MyWidget(IWidget d) {
this.delegate = d;
}
public int calculateHeight() {
// my implementation of calculate height
}
// for all other methods: {
public Object foo(Object bar) {
return delegate.foo(bar);
}
}
Чтобы это работало, необходимо прервать все создания виджета, который Вы хотите заменить, который, вероятно, означает создавать подобную обертку для WidgetFactory. И необходимо смочь настроить который WidgetFactory использовать.
Это также не зависит ни от какого клиента, пытающегося бросать IWidget назад в DefaultWidget...
cglib является библиотекой Java, которая может сделать некоторые вещи, подобные исправлению обезьяны - это может управлять байт-кодом во времени выполнения для изменения определенных поведений. Я не уверен, может ли это сделать точно, в чем Вы нуждаетесь, но это достойное внимания...
Ну, я продолжаю пытаться отправить предложения, и затем я вижу, что они не будут работать или что Вы уже упомянули попытку их.
Лучшее решение, о котором я могу думать, состоит в том, чтобы разделить WindowDisplayFactory на подклассы, затем в createView подкласса () метод, сначала назвать super.createView (), затем изменить объект, возвращенный, чтобы полностью вывести виджет и заменить его экземпляром подкласса, который делает то, что Вы хотите. Но виджет используется для инициализации материала, таким образом, необходимо было бы пойти, изменяют всех тех.
Затем я думаю об использовании отражения о возвращенном объекте от createView () и попытка починить вещи тот путь, но снова, это является волосатым, потому что так много материала было инициализировано с виджетом. Я думаю, что попытался бы использовать тот подход, тем не менее, если бы было достаточно просто выровнять по ширине его по копированию и вставке.
Я буду наблюдать это плюс размышление, чтобы видеть, могу ли я придумать какие-либо другие идеи. Уверенное Отражение Java хорошо, но оно не может разбить динамический самоанализ, который я видел доступный на языках, таких как Perl и Python.