목록개발/Java (6)
Joonas' Note
Java에서 클래스 간의 상속 관계를 확인할 때 instanceof 키워드를 사용하고 있는데, 간혹 사용하게 된다.사용 빈도가 낮다보니 오랜만에 사용하면 코드 결과에 확신이 없다.분명 맞을텐데 싶으면서도 아닐까 하는 걱정이 생긴다.참고로 이 키워드는 인터페이스에도 사용할 수 있다. 그래서 클래스 상속과 인터페이스 구현 케이스를 정리해보았다.클래스와 인터페이스 정의인터페이스 IA, IB, IC 와 클래스 A, B, C를 아래와 같이 작성했다.interface IA { void fa();}interface IB { void fb();}interface IC { void fc();} abstract class A implements IA { public A() {} @Ove..
JUnit5에서는 4가지 Lifecycle 관리 annoation을 제공한다. JUnit4에서도 있었지만 이름이 바뀌었다. @BeforeAll - (JUnit4 @BeforeClass) @BeforeEach - (JUnit4 @Before) @AfterAll - (JUnit4 @AfterClass) @AfterEach - (JUnit4 @After) Lifecycle 관리 단위를 클래스마다로 바꿀 수 있는데, 호출 순서가 조금 바뀐다. 클래스 인스턴스가 생성되고 호출되므로, @BeforeAll과 @AfterAll은 더 이상 static 함수가 아니어도 된다. 실제 코드는 아래와 같다. HTML 삽입 미리보기할 수 없는 소스 출력이나 클래스 내부 변수의 상태를 확인해보면, 상태가 다른 것을 확인할 수 있다.
/* */ 주석을 이용해서 JavaDoc을 자동으로 만들 수 있는데, @Override 한 함수도 똑같이 적어주는 건 귀찮고 불필요한 일이다. 그때마다 @see {#link ClassABC} 처럼 작성해서 오버라이드한 함수를 직접 링크했는데, 그럴 필요가 없었다. /** * * @author Hari Krishna * * @since 1.0 */ public class ABCOrg { /** * Print welcome message to employee. * * @param empName * Employee Name */ public void welcomeEmployee(String empName) { System.out.println("Hello " + empName); } } public class..
작년쯤에 Devlog에 정리한 적이 있지만, GitBook 에디터의 한글 타이핑 버그가 너무 심각해서 옮길 겸 다시 정리한다. Singleton Pattern - Today Joonas Learned Config 클래스의 생성자를 직접 호출하지 못하도록 하여, 인스턴스가 한번만 생성되도록 한다. 대신 getInstace 등의 함수로 인스턴스를 가져다 쓸 수만 있도록 제한한다. devlog.joonas.io 싱글톤 패턴 싱글턴 패턴은 인스턴스를 하나만 생성하여 사용하는 패턴이다. 개인적으로 가장 쉬우면서 흔하게 볼 수 있는 디자인 패턴이다. 예시 프로그램(또는 어플리케이션)의 설정 클래스가 있다고 치자. 그럼 이것은 프로그램 전체에서 마치 하나의 파일처럼 동작해야할것이다. 특히, 데이터베이스를 사용하는 클..
Google에는 단말기에서 AR 관련 기능이 돌아갈 수 있도록 AR 플랫폼인 ARCore가 있다. 최근 이와 관련한 업데이트가 있어 글로 남겨볼까 한다. ARCore를 사용하여 개발하는 튜토리얼을 보다보면, OpenGL을 직접 사용하지 않고 Sceneform이라는 프레임워크를 사용하여 개발하는 문서가 굉장히 많다. (실제로도 공식 샘플 코드에서 사용한다.) 하지만 관리가 점점 힘들어지는 탓인지, 프로젝트를 closed해버렸고 1.16 버전부터 오픈소스로 전환, archived 해버렸다. (한국 시간 기준으로 5월 15일) [프로젝트 링크] 이렇게 되면 한가지 문제가 있다. Android Studio에는 3D Object를 쉽게 import 하기 위한 플러그인으로, Google Sceneform Tools..
객체를 그대로 파일에 저장하기 위해 직렬화를 시도했고 코드는 아래와 같았다. 그런데 이상하게도 java.io.NotSerializableException 가 발생하면서 제대로 동작하지 않았다. stackoverflow에서 그 답변을 찾을 수 있었는데, 내부 클래스를 직렬화하기 위해서는 외부 클래스를 인스턴스화 해야하기 때문에 그렇다고 한다. 참고한 링크: https://stackoverflow.com/questions/7144912/why-is-a-serializable-inner-class-not-serializable