Generic을 알고보자

오늘도 알고보자·2022년 2월 8일
0

Generic

List와 Future를 공부하며 Generic을 본적이있다.

<> 를 사용하였고 타입 매개변수를 지정했다.

타입 매개변수

  • 매개변수는 함수 호출시 인자값을 전달하지만
  • 타입 매개변수는 단어 그대로 타입을 전달하는 매개변수이다.

  • State 라는 클래스는 CommentTilePage라는 클래스를 포함하고 있다~ 라는 뜻이다.
  • <> 안에 들어가는게 의미하는게 무엇일까?
  • State를 타고 들어가보자.

  • 여기서 T는 어떤 클래스를 받아올지 모르니 임의로 작성해 놓은 클래스이다.

  • 곳곳에서 T라는 키워드를 볼수있다.

  • 다시 예제를 보면 Manager이라는 클래스는 타입 매개변수로 을 선언하였다.

  • 그렇다면 Person 클래스와 Person 자식 클래스가 실제 타입의 매개변수가 될수있다.

  • Generic은 클래스뿐만 아니라 메서드에서도 사용 가능하며 메서드의 리턴타입 매개변수를 제네릭으로 설정할 수 있다.
    (실제 적용화면)

  • 해당 로직은 Flutter에서 api를 받아오는 로직이다.

  • Result와 SearchModel을 모두 사용하기 때문에 제네릭으로 타입설정을했다.

  • 굳이 안써도 되지만 이런게 많아진다면 컴파일 딴에서 처리해야 할게 많아진다.

  • 제네릭을 설정해주면, SearchModel과 Result를 벗어난 대입값에서 에러가 발생해 코드 오류를 미연에 방지할 수 있다.

Generic 사용의 이점

  • 유형을 안전하게 사용할 수 있다. Type safety
  • 오류방지
  • 중복소스를 줄일 수 있다.
List list = [];

어떤 타입이 와도 상관없는 Dynamic Type으로 되어있다.

개발자는 최초의 int만 들어올수있는 List이다 라고 하면

List<int> list =[];
List.add('Value'); 

List를 이렇게 int타입만 들어오게 설정을 해놓으면 Value는 String 이라 들어오지 못한다.

개발자의 실수를 방지할 수 있다.

0개의 댓글