Code Monkey home page Code Monkey logo

jwp-book's People

Contributors

javajigi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jwp-book's Issues

229쪽 UserDao에서 try catch 구조

JDK 7이상을 대부분 쓸것이니 try-with-resources로 처음부터 코드가 나와있어도 괜찮지 않을까하는 생각이 들었습니다.

133페이지 '4.2.1.5 요구사항 5 - 로그인하기'의 요구사항 마지막 줄에

133페이지 '4.2.1.5 요구사항 5 - 로그인하기'의 요구사항 마지막 줄에 '로그인이 실패하면 Cookie 헤더값이 logined=false로 전달되어야 한다.' 라고 쓰여져 있는데요, 4장의 코드에서 로그인 실패시 logined=false로 만들어 주는 부분을 찾지 못하겠습니다.

실례가 되지 않는다면, 어느 곳에 logined=false로 만들어 주는 부분이 있는지 알려 주세요.


메일을 통해 권순규님의 질문에 답변한 내용을 정리한 글이다.

273쪽의 @FuncationalInterface 관련 설명

람다를 사용하려면 RowMapper와 같이 인터페이스의 메서드가 하나만 존재해야한다. 람다 표현식으로 사용할 인터페이스라고 지정하려면 이터페이스에 @FuntionalInterface 애노테이션을 추가해야한다.

간략한 설명을 위해서 위와 같이 적으신것 같습니다.

그런데 아시다시피 @FuntionalInterface은 필수는 아닙니다. 람다로 쓸 인터페이스에 이를 다는 것은 강력히 권고할만합니다. 그런데 혹시나 @FuntionalInterface 가 달린 인터페이스만을 람다로 쓸수 있다고 독자가 오해할 수도 있지 않을까하는 걱정이 들기도 합니다. 필수요건인 '인터페이스의 메서드가 하나'가 바로 앞문장에 나오기에 더욱 그렇게 생각할 여지가 있지 않을까합니다.

풀어쓴다면 @FuntionalInterface를 달면 의도를 명확히 표현할수 있고 , 필요한 조건(추상 메서드가 하나)에 맞지 않을 경우 컴파일 에러를 내어주기 때문에 람다로 쓰기를 유도하고 싶은 인터페이스에는 @FuntionalInterface를 달것을 강력히 추천한다.. 정도가 좋지않을까 합니다. 또는 @FuntionalInterface의 javadoc을 읽어보고 이게 필수는 아니지만, 달지 않았을때보다 어떤 이득이 있을지 알아내라는 것을 과제로 내는 것도 괜찮아보입니다.

https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html

However, the compiler will treat any interface meeting the definition of a functional interface as a functional interface regardless of whether or not a FunctionalInterface annotation is present on the interface declaration.

그리고 '..RowMapper와 같이 인터페이스의 메서드가 하나만 존재해야한다.' 부분도 디폴트 메서드는 들어가있어서 상관없으므로 '추상 메서드가 하나만..'이 더 정확한 표현이기는 합니다. 이런것도 javadoc에 나와 있으니 독자가 파해쳐보도록 유도할수도 있겠네요.

java.lang.String.startsWith() 사용에 관하여 (125페이지 예제)

여기에 등록할 내용이 맞는지 모르겠습니다.

// url = "/user/create?userId=test&password=pass&name=tester&[email protected]"
if ("/user/create".startsWith(url)

책 125페이지에서, 요청 URL을 분기처리하는 부분에서 위와 같이 startsWith 메서드가 사용되었는데, 비교 하는 스트링이 startsWith()에 매개변수로 넘기는 스트링보다 짧으면 false 를 반환하도록 구현되어 있는걸로 확인했습니다.
바쁘신 와중에 오타이신 듯 합니다. 확인하셔서 정오표에 추가해주시면 감사하겠습니다.

테스트 클래스 안의 멤버변수의 생존주기 (52페이지 내용 )

52페이지에 아래와 같은 내용이 있습니다.

@Before 애노테이션을 사용하지 않고 필드로 구현하는 방법은 CalculatorTest의 인스턴스가 생성될 때 Calculator 인스턴스가 생성되어 모든 테스트 메서드가 재활용하는 방식으로 동작한다. 이와 같이 Calculator 인스턴스가 재사용될 경우 ...

그런데 아래와 같은 테스트를 돌려보면 멤버변수인 list는 재활용되지 않음을 확인할수 있습니다.

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class GoTest {

    List<String> list = new ArrayList();

    @Test
    public void go1() {
        list.add("go1");
        System.out.println(list);
    }

    @Test
    public void go2(){
        list.add("go2");
        System.out.println(list);

    }

    @Test
    public void go3(){
        list.add("go3");
        System.out.println(list);

    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.