본문 바로가기
반응형

Java20

equals와 hashCode 사용하기 ( +lombok) 안녕하세요? 이번 시간엔 equasl & hashcode를 어떤 곳에서 사용할 수 있는지를 확인해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) java를 사용하면서 equals와 hashcode를 언제 override하면 좋을지 혹은 그런것이 있는지 모르시는 분들을 몇번 뵙게 되었습니다. 피부에 와닿을 수 있는 적절한 예제를 떠올리지 못하다가 마침 업무에서 사용할 기회가 되어서 적용후 포스팅을 시작하게 되었습니다. 틀린 내용이나 더 좋은 해결책이 있으신 경우엔 언제든지 가감없이 댓글 혹은 pull request 부탁드리겠.. 2017. 3. 25.
Enum 활용 & Enum 리스트 가져오기 이번 시간엔 실제 업무에서 enum을 활용할 수 있는 방법을 소개해보려고 합니다. 모든 코드는 Github에 있으니 참고하셔서 보시면 더 좋으실 것 같습니다. (공부한 내용을 정리하는 blog-code와 세미나+책 후기를 정리하는 review, 이걸 모두 정리하는 블로그가 있습니다.) 여러 스터디를 하다보면 많은 분들이 domain의 컬럼 타입을 String만 사용하는 경우를 많이 봤습니다. 그래서 String 외에 enum이 필요한 경우를 한번 가정해보고 직접 적용하는 과정을 진행해보려 합니다. 혹시나 틀린 내용이 있다면 댓글 혹은 Pull Request를 부탁드리겠습니다.기본설정예를 들어 중개료 계약서 관리 라는 시스템을 만든다고 하겠습니다. 계약서의 항목은 다음과 같습니다.회사명수수료수수료타입기록된.. 2017. 2. 11.
서블릿의 인스턴스화, session, 멀티스레딩에 관련된 질문과 답변에 대한 번역 스택오버플로우에 올라온 서블릿과 관련된 질문에 아주 좋은 답변이 달린 것을 보고 이건 많은 분들이 보시면 좋겠다는 생각에 첫 번역을 시작하게 되었습니다. 영어를 너무 너무 못하지만 그래도 시작이 반이라고 생각되기에 일단! 시작하였습니다. (구글신을 믿습니다.) 참고로 인스턴스화 라는 것은 해당 클래스의 구현 이라고 생각하시면 됩니다.Member m = new Member // m은 Member 클래스의 인스턴스(객체가 아니에요) // 이 생성 과정을 Member 클래스의 인스턴스화 혹시나 아래 번역이 부족하여 이해가 더 안되신다면 구루비의 글을 읽어보시면 도움이 되실것 같습니다. (티스토리 블로그에 올라오는 모든 글은 깃허브에도 같이 올라옵니다.)질문)다수의 서블릿이 있는 웹서버가 있습니다. 해당 서블릿.. 2017. 1. 29.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (6) 코드리뷰 이 프로젝트를 OKKY에 올리고 나서 OKKY의 연예인이신 fender님의 리뷰을 받을 수 있었습니다. 개인적으로는 블로그에 글을 올리고나서 OKKY에 항상 바로 올리는 이유가 이런 선배님들의 피드백때문입니다. 바로 리뷰에 대한 수정을 진행하려고 했으나, 이전부터 작업하던 Spring AOP 정리를 마무리하는게 먼저라 시작이 늦었습니다. 다행히 이번주 평일전체를 연차로 쉴수 있게되어 AOP 내용도 정리하고, 이제라도 리뷰 수정을 진행할 수 있게 되었습니다. fender님의 리뷰에서 나온 수정사항들은 아래와 같습니다. Card의 패턴과 끗수를 enum으로 자연스러운 네이밍 isReceiveCard, receiveCardAllPlayers 등은 정상적인 문법은 아님 list 대신 stack을 사용 .. 2016. 12. 10.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (5) 2-5. Rule 구현하기 Rule은 승자를 판단하는 역할을 갖고 있습니다. 그래서 게임에 참여한 Player들의 카드를 비교해 승자를 구하는 코드를 구현해보겠습니다. public Player getWinner(List players){ Player highestPlayer = null; int highestPoint = 0; for(Player player : players) { int playerPointSum = getPointSum(player.openCards()); if(playerPointSum > highestPoint){ highestPlayer = player; highestPoint = playerPointSum; } } return highestPlayer; } private int.. 2016. 11. 28.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (4) 2-4. Player 구현 코드를 보시면 불편해 보이는 코드가 대거 보이실것 같습니다. 2개의 메소드 모두 dealer와 gamer만 다르지 같은 일을 하는 코드가 대부분입니다. 반대로 생각해보면 dealer와 gamer만 하나로 볼 수 있으면 코드 중복을 제거할 수 있지 않을까요?? Gamer와 Dealer는 여러 조건들에 의해 서로 다른 구현 코드를 가지고 있습니다. 하지만 카드를 받아야하고, 가진 카드를 보여줘야 한다는 공통점을 가지고 있습니다. 우린 이 공통점을 묶어 Player라는 객체를 생성하여 Gamer와 Dealer를 Player에 속하도록 수정하겠습니다. (참고로, 이렇게 서로 다른 객체들의 차이점을 배제하고, 공통점만을 취해 단순화 하는 것을 추상화 라고 합니다. 객체지향을 좀 더 단순.. 2016. 11. 27.

728x90