2021-12-05

1205 타입안전이종컨테이너를 고려하라

 


상속할경우- 런타임에도 해당 클래스의 타입이 지워지지 않고 남는다!! 

1205 제네릭과 가변인수를 함께 쓸때에는 신중하라

 

결국엔 List.of 메소드(varargs를 받는) 도 내부적으로 Object[] 배열을 만들어서 하나씩 넣고있다.

새로운 원소를 추가 삭제하는 것이 아니라 단순히 변환하여 전달하는 용도로 쓰여지고 있으므로 safe하다고 말할수있을것이다

근데 웃기는거는 12개? 까지는 of메서드 다 만들어뒀더라 ㅋㅋㅋㅋ 귀엽ㅋㅋㅋ성능최적화인듯 ㅋㅋ

1205 제네릭과 가변인수를 함께 쓸 때는 신중하라

 



가변인수를 받을경우

배열이 내부적으로 생성된다. (Object[])

해당 Object타입의 배열에는 어떠한 타입이든 들어갈수있으므로(배열은 공변)

힙오염이 발생하게 되고

class cast exception이 발생한다.!!


2021-12-04

1204 이왕이면 제네릭 메서드로 만들라

 

제네릭 메서드를 활용하여 타입안전한 메서드를 클라이언트에게제공한다!!!!

1204 이왕이면 제네릭 타입으로 만들라

 제네릭 타입의 stack만들기 

1번 : generic E타입을 받는 배열을 내부적으로 만들고

supressWarnings("unchecked")를 이용.

Object배열을 만든다음에 형변환한다



2번: 내부적으로 Object[] 배열을 만들고

원소를 내보낼떄 (pop()메소드) 에서 E타입으로 캐스팅하는 메소드 만든다



1204 로타입은 사용하지 말라

 

뭐야 결국엔 타입안전 안하다는 거 아니야?? 어이가. 없네??

2021-12-03

1203 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라

 




오버라이드 한 메서드가 부모 클래스의 생성자에서 불리고 있었다.
-> 결과, 하위클래스의 생성자가 불리기도 전에 해당 메소드가 불리게 된다.
해당 오버라이드한 메서드가 하위클래스의 인스턴스를 조작하는 행위를 하고있었기때문에-
NPE가 발생했다!!
호움!!
비슷하게 주의해야 하는경우.
오버라이드한 메소드가 상위클래스 내부의 private메소드를 사용하여 무언가 작업을 하는경우.
상위클래스의 구현변경에 의해 하위클래스가 영향을 받는다!!
ex ) Set클래스를 extends 해서 addAll 메서드를 조작했더니, 영향을 받음...

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...