728x90 Kotlin11 Kotlin - 테스트 코드 어노테이션 및 MockMvc 테스트 Mock 테스트 주요 어노테이션//@ActiveProfiles(ProfileConstants.DEVELOPMENT)//@AutoConfigureMockMvc//@TestPropertySource(properties = ["spring.profiles.active=develop"])@WebMvcTest(SlackMessageForwardingController::class)@ExtendWith(SpringExtension::class)@Import(MessagingClient::class, WebClientProvider::class)class SlackMessageForwardingControllerTest( @Value("\${spring.config.activate.on-profile}".. 2024. 1. 10. Kotlin - Any 와 * 의 차이 코틀린에서 Any와 *는 다른 목적으로 사용됩니다. 차이점은 다음과 같습니다. AnyAny는 코틀린에서 최상위 타입입니다. Java의 Object와 유사합니다.모든 코틀린 클래스는 암시적으로 Any를 상속합니다.Any는 원시 타입, null이 가능한 타입 등 코틀린의 모든 타입을 포함합니다.예: 함수가 어떤 타입의 객체든 받을 수 있을 때 Any를 사용할 수 있습니다.fun printHashCode(value: Any) { println(value.hashCode())} *(별표, Star-projection)*는 제네릭에서 사용되며, 타입 인자를 알 수 없거나 관심이 없을 때 사용됩니다. 이것은 Java의 와일드카드인 ?와 유사합니다.별표 프로젝션을 사용하면, 특정 제네릭 타입에 대해 타입 인자.. 2023. 10. 26. Kotlin - 일급 시민(First-class citizen) 일급 시민 (First-class citizen) 코틀린의 일급 시민 (First-class citizen)은 함수나 객체 지향 프로그래밍 언어에서 어떤 개체가 다른 객체들과 동일한 조건으로 사용될 수 있을 때 그 개체를 일급 개체 또는 일급 값이라고 합니다. 코틀린에서는 주로 함수를 일급 시민으로써 다룹니다, 이로 인해 여러 프로그래밍 패러다임을 지원하게 됩니다. 1. 변수에 할당할 수 있다. 함수를 변수에 할당할 수 있으며, 이 변수를 통해 함수를 호출할 수 있습니다. val greet: (String) -> Unit = { name -> println("Hello, $name!") } greet("Alice") 2. 함수의 인자로 전달할 수 있다. 함수를 다른 함수의 인수로 전달할 수 있습니다. f.. 2023. 8. 8. Kotlin - 다양한 함수 1. 확장함수 확장하려는 클래스.함수이름(파라미터): 리턴타입 { // this 를 이용해 실제 클래스 안의 값에 접근 } fun String.lastChar(): Char { return this[this.length - 1] } 확장 함수명과 맴버 함수명이 같은 시에는 멤버 함수를 출력한다. 확장 함수가 오버라이딩 된다. 정적메소드를 부르를 것 처럼도 사용이 가능합니다. 확장함수 라는 개념은 확장프로퍼티와도 연결됩니다. 확장 프로퍼티의 원리는 확장함수 + customgetter와 동일하다. 2. infix 함수 중위함수, 함수를 호출하는 새로운 방법!! downTo, step 도 함수이다! (중위 호출 함수) 변수.함수이름(argument) 대신 변수 함수이름 argument fun main() { .. 2023. 5. 6. Kotlin - 컬렉션 코틀린에서 배열은 없다. 컬렉션의 다양한 표현 방식 fun main() { val array = arrayOf(100, 200) array.plus(300) for (i in array.indices) { println("$i ${array[i]}") } for ((index, value) in array.withIndex()) { println("$index $value") } for (i in 0 until array.size) { println(array[i]) } for (element in array) { println(element) } } 컬렉션의 불변인지, 가변인지를 설정해야함. 가변 컬렉션: 컬렉션에 element 를 추가, 삭제할 수 있다. 불변 컬렉션: 컬렉션에 element 를 추가.. 2023. 5. 6. 코틀린 - Object 함수(Companion) Companion Object companion object 에 유틸성 함수들을 넣어도 되지만, 최상단 파일을 활용하는 것을 추천 드립니다! 자바에서 코틀린에 있는 static field 나 statice 함수를 사용하고 싶을 때는 @JvmStatic 어노테이션을 씁니다. Person.Companion.newBaby("ABC"); 로 접근 가능 Person.newBaby("ABC"); 로 접근 가능 반면 컴파니언 명이 있는 경우 class Person private constructor ( var name: String, var age: Int, ) { companion object Factory { private const val MIN_AGE = 1 @JvmStatic fun newBaby(name:.. 2023. 5. 1. 코틀린 - 접근 제어자 생성자 접근 제어자 생성자에 접근 지시어를 쓰려면 constructor 를 써야한다. java 에서 유틸성 코드를 만들때 abstract class + private constuctor 를 사용해서 인스턴스화를 막았음. public abstract class StringUtils { private StringUtils() {} public boolean isDirectoryPath(String path) { return path.endsWith("/"); } } 파일 최상단에 바로 함수를 만들면, static final 함수로 생성됩니다. fun isDirectoryPath(path: String): Boolean { return path.endsWith("/") } 프로퍼티 접근 제어자 두가지 방법 c.. 2023. 5. 1. 코틀린 - 클래스 생성자와 상속 다양한 생성자 선언 class Person constructor(name: String, age: Int) { var name: String = name var age: Int = age init { if (age = 20 } } 자바로 변환 시 함수 앞에 final 이 붙습니다. 모두 동일한 기능이고 표현 방식만 다릅니다. 객체의 속성이라면, custom getter를 쓴다. 그렇지 않다면 함수를 씁니다. custom getter, setter 선언 방법 var name: String = name get() = field.uppercase() set(value) { field = value.uppercase() } abstract class Animal( protected val species : St.. 2023. 5. 1. Kotlin - 기본 문법2 Primitive Type 과 Reference Type 을 구분하지 않아도 된다. Null 이 들어갈 수 있는 변수는 타입 뒤에 ?를 붙여주어야 한다. - 아예 다른 타입으로 간주된다. 객체를 인스턴스화 할 때 new 를 붙이지 않아야 한다. 코틀린에서 null 을 다루는 방법 1. 코틀린에서 null 체크 2. Safe Call 과 Elvis 연산자 val str: String? = "ABC" (nullable 타입) str?.length // 가능!! => null 아니면 실행되고 null 이면 null 반환한다. str?.length ?: 0 null 이면 0 반환한다. 3. 널 아님 단언!! nullable 타입이지만, 아무리 생각해도 null 이 될 수 없는 경우 str!!.startsWith.. 2023. 4. 17. Kotlin - 기본 문법1 1. 함수 선언 함수를 선언하려면 fun이라는 키워드를 이용 반환 타입을 선언할 수 있으며 생략하면 자동으로 Unit 타입이 적용 함수의 매개변수에는 var나 val 키워드를 사용할 수 없으며 val이 자동으로 적용 => 매개변숫값은 변경 불가능하다. 함수의 매개변수에는 기본값 선언 가능 fun main() { fun some(data1: Int, data2: Int = 10): Int { return data1 * data2 } } 매개변수명을 지정하여 호출하는 것을 명명된 매개변수라고 하며, 이렇게 하면 함수 선언문의 매개변수 순서에 맞춰호출하지 않아도 됩니다. some(date2 = 20, data1 = 10) 2. 컬렉션 타입 List, Set, Map List: 순서가 있는 데이터 집합으로 데이.. 2023. 3. 27. Kotlin - 변수 선언 자바는 파일명과 클래스명이 맞아야한다. 하지만 코틀린은 그럴 필요가 없다. val 특징 1. 데이터 타입 Int, Short, Long, Double, Float, Byte, Boolean ― 기초 타입 객체 Char, String ― 문자와 문자열 String 타입의 데이터는 문자열을 큰따옴표(“)나 삼중 따옴표(“””)로 감싸서 표현 Any ― 모든 타입 가능(변수에 붙임) val data1: Unit = Unit Unit ― 반환문이 없는 함수(함수에 붙임, 반환 타입 생략가능)(void 느낌) // Unit 타입 사용 예 - 반환문이 없는 함수 fun some(): Unit { println(10 + 20) } // 반환 타입을 생략한 예 fun some() { println(10 + 20) } .. 2023. 3. 1. 이전 1 다음 728x90