java
-
[JAVA] @FunctionalInterface / 람다식java/함수형 프로그래밍 2022. 3. 9. 19:59
함수형 인터페이스 1. 추상 메서드가 정확히 하나만 존재해야 하는 인터페이스 2. default 메서드, static 메서드의 개수는 상관이 없다. 3. 모든 클래스는 Object의 자손 클래스이므로 인터페이스를 구현한 클래스는 항상 Object의 메서드를 사용할 수 있다. -> 함수형 인터페이스에 정의된 Object의 메서드들은 함수형 인터페이스 내부의 추상 메서드 카운트에 포함되지 않음 @FunctionalInterface 특정 인터페이스에 @FunctionalInterface 어노테이션을 붙이면 컴파일러가 해당하는 인터페이스가 위의 1~3의 조건을 (함수형 인터페이스 조건)을 만족하는지를 검사해준다. 추상 메서드가 하나만 존재 -> ok 추상 메서드가 없거나, 두개 이상 존재하는 경우 -> 컴파일 ..
-
[Java] 클래스 상속관계에서의 static 메서드 재정의java/Class.Interface.Method 2022. 2. 6. 03:11
인터페이스의 static 메서드를 공부하며 그다지 깊게 생각해보지 않았는데 상속관계에서의 static 동작에 대해 부족한 부분이 있었다. static 메서드의 오버라이딩에 대해 부족한 점이 문제였다. 오버라이딩이란에 대해서 다시 한번 생각해보고 자바 메모리 구조에 대해서 한번더 생각해보는 계기였다. 공부 내용을 되생각해보니 Kotlin에서 확장 프로퍼티, 확장 함수에서 접했던 hiding 되는 내용과 비슷한 면이 있는 듯하다. class A { public static void staticMethod() { System.out.println("static A"); } } class B extends A { } public class Test { public static void main(String[] ..
-
[Java] Interface 나중 참고용java/Class.Interface.Method 2022. 2. 5. 21:05
인터페이스 내부에 선언되는 것들은 모두 public 이다. 선언 가능한 것들: 상수, 추상 메서드, 디폴트 메서드(java8), static 메서드(java8) 코드 삽입 부분의 것은 축약된 형태이다. 1. 상수 정의 interface TestInterface { int a = 100; //상수 } 모두 public static final로 간주된다. 2. 추상 메서드 정의 interface TestInterface { void abstractMethod(); //추상 메서드 } 모두 public abstract 로 간주된다. 인터페이스의 추상 메서드를 모두 구현해야 하는 점이 있었다. java8부터 구현내용이 있는 static 메서드와 디폴트 메서드를 정의할 수 있다. 두가지는 인터페이스 구현시 오버라..
-
까먹은 것들 정리java 2021. 12. 25. 02:57
코틀린 하다가 자바 기본기가 흔들려 다시 머리식힐겸 정리해놓은 블로그가 있길래 정독중이다. 틀린 부분도 있는데 그냥 그러려니 하고 읽고 있다. Java 프로그램이 여러 운영체제에서 돌아갈 수 있는 이유 -> Java 프로그램을 돌리는 JVM이 운영체제에 맞게 설계됨 JRE (Java Runtime Environment) : 자바 프로그램을 실행시킬 수 있는 환경 JDK (Java Development Kit) : 자바 개발 도구 + JRE 단항 부호 연산자 +변수, -변수의 산출 타입은 int 산술 연산자 long 타입을 제외한 모든 정수형은 int 타입으로 계산된다. 나머지의 경우 두 피연산자 중 더 큰 타입으로 변환되어 계산된다. 문자열 덧셈의 경우 &&, & (논리 and) || | (논리 or) ..
-
[Java] Wrapper class 관련java/Class.Interface.Method 2021. 12. 16. 13:22
Collection에는 객체를 담아야 한다. primitive 타입은 객체가 아니라 Collection에 넣지 못한다. primitive 타입이 객체로 변경된 것에 해당하는 클래스인 Wrapper클래스를 사용하여 Collection에 넣는다. primitive타입이 객체 타입으로 변환된 클래스가 Wrapper 클래스 int타입의 Wrapper 클래스인 Integer 클래스만 확인해봄 int / Integer (int형 Wrapper 클래스) 간의 Boxing, Unboxing , AutoBoxing, AutoUnboxing package wrapperclass; public class WrapperTest { public static void main(String[] args) { Integer inte..
-
[Java] Java File 클래스 공부java/IO 2021. 10. 29. 02:25
Absolute Path VS Relative Path https://mommoo.tistory.com/82 절대경로, 상대경로란? 안녕하세요. 프로그래밍을 하다보면, 경로에 관한 것을 처리하곤 합니다. 이때 어떤 API는 절대 경로 로 처리를, 또 다른 API는 상대 경로 로 처리를 하곤 합니다. 절대 경로 , 상대 경로 의 개념이 mommoo.tistory.com What does abstract path means in java.io? https://stackoverflow.com/questions/24611148/what-does-abstract-path-means-in-java-io What does abstract path means in java.io? In java doc about Fil..
-
[Java] 내부 클래스java/Class.Interface.Method 2021. 8. 29. 14:46
코틀린 내부 클래스 https://hellose7.tistory.com/119 [kotlin] Nested Class [Java/Nested Class] - [Java] 내부 클래스 [Java] 내부 클래스 non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴스를 생성해야한다. class Outer { class Inner { } } public.. hellose7.tistory.com 내부 클래스란 클래스 안에 선언된 클래스를 의미한다. 보통 non-static 내부 클래스를 Inner 클래스라고 부르고, static 내부 클래스를 static nested 클래스라고 부른다. non-static 내부 클래스 인스턴스 생성법 반드시 외부 클래스 인스턴스를 통해 인스턴..
-
[Java] 익명 클래스java/Class.Interface.Method 2021. 8. 28. 14:54
-익명 클래스란 class A 를 상속받아 어떠한 기능을 하는 class B를 만들어야 한다고 가정하자. class B extends A로 클래스 B를 선언한 뒤에 new B를 통해 객체를 생성한다. 만약 프로그램에서 클래스 B는 현재 한번만 사용되고 차후에 사용될 필요가 없다면?? 클래스로 선언해 놓을 필요가 없을 것이다. 익명 클래스는 기존의 방식처럼 클래스를 선언하지 않고 코드상에서 한번쓰는 방식으로 선언할 수 있다. 또한 이름을 가지지 않는다. 익명 클래스는 인터페이스 하나만 구현하거나, 클래스 하나만 상속받을 수 있다. 여러 인터페이스 동시에 구현 불가 인터페이스 구현, 클래스 상속이 동시에 불가 하나를 상속받거나, 구현해야하기 때문에 아무것도 상속받지 않거나, 아무것도 구현하지 않은 마음대로 ..