C#의 확장 메서드는 구문 설탕을 추가하는 데 적합합니다. Java 확장 메소드는 라이브러리 개발자가 인터페이스에 메소드를 추가 할 수있게 해줍니다.Java는 비 라이브러리 개발자가 확장 메서드를 사용할 수있는 방법을 제공합니까?
나는 라이브러리가 아닌 Java 개발자로서 라이브러리에서 새로운 기능을 얻는 데 많은 이점을 얻을 것이라고 생각하지만 여전히 C# 확장 메서드의 구문 설탕 기능을 갖고 싶어합니다.
이 문제가 발생합니까 아니면 향후 Java 버전에서 가능합니까?
예 : 나는
String data = StringUtils.capitalize("abcd"); // instead of this
String data = "abcd".capitalize() // I would like to do this
이 특정 예에 초점을하지 마십시오, 나는 단지 내가 할 수 있도록하려는 기능의 클래스를 보여주는입니다 ... String 클래스에 메소드를 추가하고 싶습니다 이루다.
Java는 이러한 방식으로 확장 클래스에 "필사자"를위한 메커니즘을 가지고 있지 않습니다. 특정 디버깅 도구로 재생할 수있는 몇 가지 트릭이 있지만 디버그 시나리오 외부에서 사용하기위한 것은 아닙니다. –
일반적으로 "라이브러리 개발자"와 "응용 프로그램 개발자"(적어도 Java 세계에서는) 사이에는 단단한 경계가 없습니다. 특정 기능을 라이브러리에 사용할 수있는 경우 응용 프로그램에서도 사용할 수 있습니다. 물론 일부 기능의 복잡성으로 인해 라이브러리에서 더 많이 사용 될 수 있습니다. 예를 들면 : 복잡한 시나리오에서 제네릭을 잘 사용하는 * 쓰기 API는 매우 어렵 기 때문에 대개 (재사용 가능한) 라이브러리에서만 수행됩니다. * API를 사용하는 것이 훨씬 쉽습니다 (API가 잘 설계된 경우). –