Создание расширения для класса? - PullRequest
1 голос
/ 11 декабря 2011

В некоторых языках, таких как C # и Objective C, вы можете создавать расширения классов. Это означает, что вы можете добавить дополнительные методы к существующему классу без необходимости расширять этот класс. Возможно ли это на Java?

Ответы [ 5 ]

7 голосов
/ 11 декабря 2011

Как упоминает Оли, это невозможно.

Стоит отметить, что метод расширения в C # - это просто причудливый способ вызова статического метода, поэтому, хотя он выглядит как

someobject.MyExtensionMethod();

тогда компилятор переводит это в

SomeStaticClass.MyExtensionMethod(someobject);

Вы не действительно добавляете метод к объекту

3 голосов
/ 11 декабря 2011

Нет, не со стандартной Java.

1 голос
/ 11 декабря 2011

Мне неизвестна языковая конструкция, которая позволила бы вам это сделать, но вы могли бы использовать шаблон Decorator для достижения своей цели.

1 голос
/ 11 декабря 2011

Вы можете использовать AspectJ , который использует ткачество во время компиляции, чтобы добавить к байт-коду.

0 голосов
/ 26 мая 2015

Это возможно с библиотекой lombok. Есть аннотация, которая называется @ ExtensionMethod.

Это дает вам эту функциональность.

См. https://projectlombok.org/features/experimental/ExtensionMethod.html

...