Languages | Frameworks/Java
게시판 글이 중간에 삭제시 > 번호 초기화후 인덱싱 하는 방법
하지만 이 방법은 DB의 seq를 변경하기 때문에, 다른 방법을 알아보았다. 이렇게 사용자들에게 글 번호를 순차적으로 보여주고 싶을 때, DB의 seq를 뿌려주는 것이 아니라 DB에서 가져온 데이터 개수를 세어서 1부터 순차적으로 리스팅 하는 방법으로 해보았다. 먼저 아래와 같이 pageIndex(페이지 번호)와 pageUnit(한 페이지당 보여줄 글 갯수)등을 저장한 BaseSearchVO를 상속받는다. BaseSearchVO protected int pageIndex = 1; protected int pageUnit = 20; public BaseSearchVO() { } public BaseSearchVO(BaseSearchVO vo) { copy(vo); } public void copy(Base..
[Java] 추상 클래스와 인터페이스
추상 클래스(Abstract class)와 인터페이스(Interface)의 차이 및 존재 이유를 설명해주세요. 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는 클래스 내 '추상 메소드'가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다. 반면 인터페이스는 모든 메소드가 추상 메소드인 경우입니다. (자바 8에서는 default키워드를 이용해서 일반 메소드의 구현도 가능합니다.) 두 개념의 차이는 너무 명확하지만, 하는 일은 비슷합니다 추상 클래스와 인터페이스는 상속받는 클래스 혹은 구현하는 인터페이스 안에 있는 추상 메소드를 구현하도록 강제한다. 이 '하는 일'을 한번 생각해보면 결국 추상 메소드를 구현하는 건데, 그렇다면 추상 클래스 하나만 존재하되, 추상 클래스 안에 추..
Optional이란?
1. Optional이란? [ NPE(NullPointerException) ] 개발을 할 때 가장 많이 발생하는 예외 중 하나가 바로 NPE(NullPointerException)이다. NPE를 피하기 위해서는 null을 검사하는 로직을 추가해야 하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 로직이 상당히 번거롭다. 그렇기 때문에 null 대신 초기값을 사용하길 권장하기도 한다. List names = getNames(); names.sort(); // names가 null이라면 NPE가 발생함 List names = getNames(); // NPE를 방지하기 위해 null 검사를 해야함 if(names != null){ names.sort(); } [ Optional이란? ]..
Static 응용 - 싱글톤 패턴(singleton pattern)
싱글톤 패턴이란? 프로그램에서 인스턴스가 단 한 개만 생성되어야 하는 경우 사용하는 디자인 패턴 static 변수, 메서드를 활용하여 구현 할 수 있음 private static으로 instance 선언후에 getInstance에서만 instance를 사용할 수 있다. 같은 주소값을 가지게 된다
static 변수
static 키워드를 사용한 변수는 클래스가 메모리에 올라갈 때 자동으로 생성이 된다. 즉, 인스턴스(객체) 생성 없이 바로 사용가능 하다. 인스턴스 생성 없이 바로 사용가능 하기 때문에 프로그램 내에서 공통으로 사용되는 데이터들을 관리 할 때 이용한다. 일반적으로 우리가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다.