자바 - 9.1 유형의 안전 한 용 기 를 처음부터 인식 합 니 다.

3778 단어 자바
이 장 에서 우 리 는 유형 이 안전 한 용 기 를 간단하게 말 해 보 자.
유형 안전 에 대해 말하자면 범 형 이 라 고 할 수 밖 에 없다. 물론 우 리 는 여기 서 범 형 을 어떻게 사용 하 는 지 간단하게 소개 할 뿐 뒤의 장 은 계속 전 개 될 것 이다.
1. 어떻게 해야만 유형 안전 이 라 고 할 수 있 습 니까?
하나의 반 례:
package com.ray.ch09;

import java.util.ArrayList;

public class Test {
	private ArrayList fruitList = new ArrayList();

	public void addOrange(Orange orange) {
		fruitList.add(orange);
	}

	public void addApply(Apple apple) {
		fruitList.add(apple);
	}

	public static void main(String[] args) {
		Test test = new Test();
		for (int i = 0; i < 5; i++) {
			test.addApply(new Apple());
		}
		for (int i = 0; i < 10; i++) {
			test.addOrange(new Orange());
		}

	}

}

class Apple {
}

class Orange {
}

위의 코드 를 보면 fruitList 에 Orange 가 들 어 있 고 Apply 가 들 어 있 는 것 을 볼 수 있 습 니 다. 그러면 우리 가 get 이 나 와 야 할 때 우 리 는 Object 만 나 왔 습 니 다. 이것 은 문제 가 발생 할 것 입 니 다. Apply 로 전환 하 느 냐 Orange 로 전환 하 느 냐 에 달 했 습 니 다. 만약 에 잘못 전환 하면 운 이 이상 합 니 다.
따라서 코드 프로 그래 밍 형식 을 안전 하 게 하려 면 범 형 을 활용 해 야 하고 모든 List 는 넣 은 대상 을 한정 해 야 한다.
package com.ray.ch09;

import java.util.ArrayList;

public class Test {
	private ArrayList<Apple> applyList = new ArrayList<Apple>();
	private ArrayList<Orange> orangeList = new ArrayList<Orange>();

	public void addOrange(Orange orange) {
		orangeList.add(orange);
	}

	public void addApply(Apple apple) {
		applyList.add(apple);
	}

	public static void main(String[] args) {
		Test test = new Test();
		for (int i = 0; i < 5; i++) {
			test.addApply(new Apple());
		}
		for (int i = 0; i < 10; i++) {
			test.addOrange(new Orange());
		}

	}

}

class Apple {
}

class Orange {
}

새로운 코드 에 있 는 모든 list 는 특정한 대상 만 배치 할 수 있 기 때문에 유형 안전 에 문제 가 발생 하지 않 습 니 다.
위 에서 사용 하 는 것 은 범 형 으로 유형 을 한정 했다.이렇게 하면 운행 할 때 전환 이상 이 나타 나 지 않 을 것 이다.
 
2. 위로 전환 할 수 있 는 대상 에 대해 같은 종 류 를 계승 하거나 같은 인 터 페 이 스 를 실현 하 는 경우 에 도 같은 범 형 list 에 넣 을 수 있다.
package com.ray.ch09;

import java.util.ArrayList;

public class Test {
	private ArrayList<Apple> applyList = new ArrayList<Apple>();

	public void addApple(Apple apple) {
		applyList.add(apple);
	}

	public static void main(String[] args) {
		Test test = new Test();
		for (int i = 0; i < 5; i++) {
			test.addApple(new Gala());
			test.addApple(new Fuji());
		}
	}

}

class Apple {
}

class Gala extends Apple {
}

class Fuji extends Apple {
}

 
package com.ray.ch09;

import java.util.ArrayList;

public class Test {
	private ArrayList<CanSwim> swimList = new ArrayList<CanSwim>();

	public void add(CanSwim canSwim) {
		swimList.add(canSwim);
	}

	public static void main(String[] args) {
		Test test = new Test();
		for (int i = 0; i < 5; i++) {
			test.add(new Person());
			test.add(new Fish());
		}
	}

}

interface CanSwim {
}

class Person implements CanSwim {
}

class Fish implements CanSwim {
}

 
결론: 이 장 에 서 는 어떻게 해 야 유형 안전 인지, 그리고 유형 안전 에 대한 주의 점 을 토론 했다.
 
 
이 장 은 여기까지 입 니 다. 감사합니다.
-----------------------------------
목차

좋은 웹페이지 즐겨찾기