NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Java 17-4. 클래스의 확장 메서드. (Extension method)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 정말 오랜만에 Java 관련 글을 적는군요-_-; 시작하기에 앞서 우선, Java는 Extension method(확장 메서드)를 지원하지 않는다는걸 먼저 말해야 할거 같습니다. 그렇기 때문에 이 글을 읽을 필요는 딱히 없지만 상식 차원에서 가볍게 보시는 것도 좋을거 같네요^^

    C#의 확장 메소드 알아보기 ]

    ex151pu.jpg

     

     

    프로그래밍 언어가 발전해 오면서 확장 메서드에 대한 개념은 2부류로 갈리게 되었습니다. 클래스의 기능을 확장해서 사용하는 방법을 제시하고 적극 권장하는 쪽과 클래스는 변경 불가능 해야하며 클래스가 변경되는 것을 나쁜 것으로 단정짖고 사용할 수 없도록 하는 쪽으로 말이죠. 실제로 Objective-C, JavaScript, PHP, Ruby, C#과 같은 언어들은 확장 메서드를 사용하여 얻는 이점이 있기도 합니다. 하지만, 잘못된 사용으로 큰 손해를 보기도 하죠. 이 내용은 아직도 갑론을박하는 상황이므로 제가 어떻다라고 말하기는 사실 모호한 부분이 있긴 합니다. 그렇지만 점점 더 확장 메서드를 허용하는 쪽으로 기울어 가고 있는듯 보이니 언젠가는 Java에서도 받아들일 것으로 생각됩니다.

    W3183bm.jpg

     

     

    C#은 확장 메서드의 개념을 상당히 적극적으로 받아들인 편입니다. Extension method, Partial classes, LINQ, Lambda등등이 그렇죠. 하지만, C#도 클래스의 변경에 대해서는 소극적입니다. 확장에 대해서만 그렇다는 이야기 입니다. 이는 Ruby나 JavaScript와도 큰 차별점을 가지게 되고, 좀 더 안정적인 개념으로 발전하게 되었습니다. 확장 메서드를 사용하면 구문을 분석하는데 용이하고 더 쉽게 사용할 수 있도록 해줍니다. 하지만, 아직도 전통적인 방법을 사용하고 있죠^^;

     

    사실 Java 8에 추가된 람다식(Lambda Expressions)을 사용해보면 확장 메서드가 가지는 이점에 대해 체험해 볼 수 있을겁니다. 하지만, Java는 데코레이터 디자인 패턴을 사용하거나 정적 클래스와 상속을 이용하여 편리하게 사용되어야 할 코드들을 활용합니다. C#도 개발자가 직접 확장 메서드를 구현하기 보다는 정적 클래스를 이용하는 편이죠.

    1AlFZF9.jpg

     

     

    Java 8에 람다식(Lambda Expressions)이 포함된걸로 짐작컨데 Java 9에는 확장 메서드도 추가되지 않을까 생각하고 있었는데요. 약 3개월 후에 릴리즈 되는 내용을 보면 가능성이 낮아 보입니다. 그래도 언젠가는 추가되지 않을까 예상해봅니다. 현대적인 언어들이 대부분 클래스의 확장에 대한 기능을 제공하고 있고 인터넷 여론도 그쪽으로 기우는거 같아 보이기 때문입니다.

     

    다음 시간에...

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.