Java (19) 썸네일형 리스트형 JAVA8) 함수형 인터페이스 함수형 인터페이스는 하나의 abstract 메소드를 가지는 인터페이스이다. 앞선 함수형 프로그래밍의 특징 중 1급 객체라는 것이 있었다. 변수와 collection에 자료를 할당하고, 함수의 파라미터로 넘겨주고, 반환값으로 사용이 가능하다는 것. Java의 함수는 이런 역할을 할 수 없다. java에서 함수를 1급 객체처럼 다룰 수 있게 하기 위해 생긴 것이 함수형 인터페이스이다. interface Movable { void move(int num); } 이 인터페이스를 구현한 클래스로 만든 객체는 하나의 단 하나의 함수를 가진다. 이는 1:1관계가 되어 이 객체를 만드는 것은 이 함수를 사용한다는 말과 같게 됨으로써 1급 객체처럼 사용할 수 있다. 자바의 주요 함수형 인터페이스) Function : 하.. 함수형 인터페이스 메소드 : 매개변수의 값과 필드의 값에 따라 반환하는 값이 다를 수 있다. 함수 : 매개변수의 값이 일정하면 반환값도 일정하다. public void draw() { Money money = Bank.login(); if (money != null) { process(money); } } 이 함수에서 draw() 외부의 login()이 반환하는 Bank의 상태는 함수의 입력이다. 그 값을 모른다면 draw() 함수가 어떻게 작동할지 알 수 없다. Bank.login()이 반환하는 값에 따라 draw()가 내놓는 결과값(출력)은 다를 것이다. 이를 Side-effec(부작용, 부수작용)이라 한다. “우리가 이 함수를 호출하려면 인수 목록에는 없지만 필요한 것들이 무엇이고, 반환 값에 반영되지 않으면서 하는.. static 메소드 사용 static 키워드를 쓰면 자바가 구동될 때 메모리할당을 딱 한번만 하게되어 이점이 있다. static을 붙인 메소드는 어디 쓰이면 좋을까. 1. 유틸성 메소드 정해져 있는 값을 가지고 포멧을 변경한다거나 도구처럼 정해놓고 자주 쓰는 특정한 메소드들에 대해 static으로 지정하고 사용한다. 2. 객체가 아닌 것 객체란 상태를 가지고 활동하는 것을 떠올릴 수 있다. 1번에서 언급한 것들 처럼 '도구'는 객체가 활동하는데 필요한 것이지 자체로 뭔가 활동하는 것이 아니다. 인스턴스를 생성하지 않아도 메소드를 호출 하고 싶다면 static 메소드로 만들도록 한다. 1, 2주차의 RandomUtils에서 매개변수가 없는 생성자를 private으로 생성하고 있었다. 랜덤값을 생성해주는 클래스는 '도구'와 같은 역.. equals() Overriding 자동차 미션을 테스트하는 중에 List에 담긴 Car객체의 Name과 Position이 잘 담겼는지 테스트하는 상황이 왔었다. 하지만 테스트를 위해 작성한 예상 객체와 실제 객체는 주소가 다르므로 값이 같아도 다르다는 결과가 나왔다. 그래서 값 자체를 빼와서 테스트를 진행했는데, 이보다 좋은 방법을 발견하여 작성해본다. 모든 Object 형 객체는 기본적으로 equals() 메소드와 hashCode() 메소드를 가진다. 이 중 equals()는 두 객체가 동일한 객체인지 테스트하는 메소드이다. 이 동일한 객체가 무엇이냐면, class Car{ private String name; public Car(String name) { this.name = name; } } Car car1 = new Car("티코.. String과 StringBuilder String string은 불변이다. String str = "abc"; str = "def"; 가 가능한데 왜 불변일까. 여기서 중요한 점은, String은 기본타입이 아닌 참조타입이라는 점이다. String 변수형의 첫 글자가 대문자임에서도 나타나듯이, 클래스이다. String 객체는 stack영역에 직접 값을 저장하는 int, char등과 달리 Heap영역의 String constant pool이라는 곳에서 따로 관리된다. 드래그 List가 안되고 List은 되는 이유는, wrapper는 클래스이기 때문에 힙영역에서 관리된다. collection 역시 힙 영역에서 관리되기 때문에, List는 힙영역에서 스택영역을 참조하는 구조라 말이 안된다. (방금 생각한 내용) int num = 10; num =.. Arrays.asList() List stringList = Arrays.asList(arr); arr이라는 배열을 ArrayList로 바꿔 반환하는 메서드. 우리가 일반적으로 아는 java.util.ArrayList와 다르다. 레퍼런스를 찾아보면java.util.Arrays에서 함수를 발견할 수 있는데, Returns a fixed-size list backed by the specified array. This method acts as bridge between array-based and collection-based APIs, in combination with Collection.toArray(). 이라는 문구가 있다. 고정된 사이즈의 배열을 반환한다는 것이 무엇일까. asList()로 만들어진 ArrayList는 set.. Google Java Style Guide(번역) 이 글은 Google Java Style Guide을 번역하고 공부하기 위해 작성되었습니다. 원본을 읽으며 이해하고 이해한 대로 번역했습니다. (잘 모르는 부분은 직역하기도 했습니다.) 틀린 부분이나 번역에 대한 의견이 다르다면 댓글로 말씀 부탁드리겠습니다. 원본은 google.github.io/styleguide/javaguide.html#s1-introduction Google Java Style Guide 1 Introduction This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is d.. Java 접근지정자 1. public : 모든 접근을 허용. 어떠한 클래스가 접근을 하든 모두 허용됩니다. 2. protected : 상속받은 클래스 or 같은 패키지에서만 접근이 가능. 3. default : 기본 제한자, 자신 클래스 내부와 같은 패키지 내에서만 접근이 가능. 4. private : 외부에서 접근이 불가능. 같은 클래스 내에서만 접근이 가능. 이전 1 2 3 다음