Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

Test . Generic 본문

JAVA/chapter22_generic

Test . Generic

GAWON 2023. 5. 30. 18:43
Q1. Test01.java
문자/정수/실수 타입의 배열을 전달하고 데이터 타입을 체크하여
해당 데이터 타입과 해당 배열의 데이터들을 출력
class TypeCheckClass - 필드 : T[] arr
   					  메소드 : String checkType(T[] arr), toString()

Q2. Test02.java

정수/실수 타입의 배열을 전달하면 해당 배열에 저장된 모든 요소의 합을 리턴하는 sum() 메소드를 구현하시오.
예) int 5개 전달하면 5개의 합 출력
★
 - static <T extends Number> double sum(T[] arr)  형식 작성
 	-> Number 형태의 데이터만 가능하다는 의미(int, long, float, double, byte, short)
 - 배열의 값을 가져올때 배열.doubleValue()사용
 	-> 배열인덱스.doubleValue()

Q3. Test03.java
1. 메인클래스를 보고 알맞은 클래스들을 구현하시오.
2. Product 클래스를 구현하시오.
	필드 : T1 category, T2 model
	적절한 메소드 구현하기
	
public static void main(String[] args) {

	Product<Elec, Tv> product1 = new Product<>();
	Product<Life, Cup> product2 = new Product<>();

	product1.setCategory(new Elec());
	product1.setModel(new Tv("LG"));
	
	System.out.println(product1);			// 출력 예시) 전자제품, LG TV
}

Q4. Test04.java
interface Car					메소드 : info();
class Bus implements Car
class CityTourBus extends Bus
class SeoulBus extends Bus
class Taxi implements Car
Class Bicycle
Class Test04					메소드 : static <T extends Car> void onlyCar(T car) 
 - CityTourBus, SeoulBus, Taxi 정보 출력
package org.joonzis.test;

import java.util.Arrays;

class TypeCheckClass<T>{
	private T[] arr;
	public String checkType(T[] arr) {
		this.arr = arr;
		if(arr instanceof String[]) {
			return "문자형 입니다";
		}else if(arr instanceof Integer[]) {
			return "정수형 입니다";
		}else {
			return "실수형 입니다";
		}
	}
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append("배열 데이터 : ").append(Arrays.toString(arr)).append("\n");
		sb.append("배열 형태 : ").append(checkType(arr));
		return sb.toString();
	}
}
public class Test01 {
	public static void main(String[] args) {
		
		String[] arr1= {"a", "b", "c"};
		Integer[] arr2 = {123, 456, 789};
		Double[] arr3 = {1.5, 2.43, 3.14};
		
		TypeCheckClass<String> ck1 = new TypeCheckClass<>();
		TypeCheckClass<Integer> ck2 = new TypeCheckClass<>();
		TypeCheckClass<Double> ck3 = new TypeCheckClass<>();
		
		ck1.checkType(arr1);
		ck2.checkType(arr2);
		ck3.checkType(arr3);
		
		System.out.println(ck1);
		System.out.println(ck2);
		System.out.println(ck3);
		
		
	}
}
package org.joonzis.test;

public class Test02 {
	
	static <T extends Number> double sum(T[] arr) {
		double total = 0;
		for(int i=0; i<arr.length; i++) {
			total += arr[i].doubleValue();
		}
		return total;
	}
	
	public static void main(String[] args) {
		Integer[] arr1 = {123, 456, 789};
		Double[] arr2 = {1.5, 2.43, 3.14};
		String[] arr3 = {"hello", "java"};
		
		System.out.println(sum(arr1));
		System.out.println(sum(arr2));
		//System.out.println(sum(arr3));
		
		
		
	}
}
package org.joonzis.test;

//Product 클래스를 구현하시오.
//필드 : T1 category, T2 model
class Product<T1, T2>{
	private T1 category;
	private T2 model;
	public void setCategory(T1 category) {
		this.category = category;
	}
	public void setModel(T2 model) {
		this.model = model;
	}
	@Override
	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append(category).append(", ").append(model);
		return sb.toString();
	}
}
class Elec{
	@Override
	public String toString() {
		return "전자제품";
	}
}
class Tv{
	private String model;
	public Tv(String model) {
		this.model = model;
	}
	@Override
	public String toString() {
		return model + " TV";
	}
}
class Life{
	@Override
	public String toString() {
		return "생활용품";
	}
}
class Cup{
	private String model;
	public Cup(String model) {
		this.model = model;
	}
	@Override
	public String toString() {
		return model;
	}
}
public class Test03 {
	public static void main(String[] args) {

		Product<Elec, Tv> product1 = new Product<>();
		Product<Life, Cup> product2 = new Product<>();

		product1.setCategory(new Elec());
		product1.setModel(new Tv("LG"));
		
		System.out.println(product1);			// 출력 예시) 전자제품, LG TV
		
		
		product2.setCategory(new Life());
		product2.setModel(new Cup("머그컵"));
		
		System.out.println(product2);
		
		
	}
}
package org.joonzis.test;
interface Car{
	public void info();
}
class Bus implements Car{
	@Override
	public void info() {}
}
class CityTourBus extends Bus{
	@Override
	public void info() {
		System.out.println("시티 투어 버스");
	}
}
class SeoulBus extends Bus{
	@Override
	public void info() {
		System.out.println("서울 버스");
	}
}
class Taxi implements Car{
	@Override
	public void info() {
		System.out.println("택시");
	}
}
class Bicycle{
	
}
public class Test04 {
	static <T extends Car> void onlyCar(T car) {
		car.info();
	}
	
	public static void main(String[] args) {
		
		Car bus1 = new CityTourBus();
		Car bus2 = new SeoulBus();
		Car taxi = new Taxi();
		
		onlyCar(bus1);
		onlyCar(bus2);
		onlyCar(taxi);
		
		
	}
}

'JAVA > chapter22_generic' 카테고리의 다른 글

chapter06 : generic  (0) 2023.05.30
chapter05 : generic  (0) 2023.05.30
chapter04 : generic  (0) 2023.05.30
chapter03 : generic  (0) 2023.05.30
chapter02 : generic  (0) 2023.05.30