generic code 형태의 class : T 파라미터 값을 이용한 자료형 class
java11번대 이상에서 사용( 8번대는 사용 불가 )
알아두면 좋다!~
⚡ T : type
T : type의 약어, 사실 아무거나 써도 되지만 통상적으로 T 사용
public class generic { public static void main(String[] args) { gen<String> g = new gen<String>(); //무조건 문자로 던지라는 class g.test("test"); //test 출력 gen<Integer> g2 = new gen<Integer>(); //무조건 숫자로 던지라는 class g2.test(100); //100 출력 } } class gen<T> { //자료구조를 자유자재로 사용 가능 T result; public void test(T rs) { this.result = rs; System.out.println(this.result); } }
- 2개도 사용가능package java_test_t; import java.util.ArrayList; public class generic { public static void main(String[] args) { gen<String,String> g = new gen<String,String>(); //무조건 문자로 던지라는 class g.test("test"); //test 출력 gen<Integer,String> g2 = new gen<>();//무조건 숫자로 던지라는 class, new~<> 비워도 됨 g2.test(100); //100 출력 gen<Integer,Integer> g3 = new gen<>(); g3.nbtest(123); //123 출력 } } class gen<T,Z> { //자료구조를 자유자재로 사용 가능 //T result = 0; 이렇게는 사용 불가 T result; Z number; public void test(T rs) { this.result = rs; System.out.println(this.result); } public void nbtest(Z nb) { System.out.println(nb); } }
⚡ java시험(6/10) 10번문제 generic으로 풀이
abstract 이용하여
[1.휴대폰 인증, 2.이메일 인증] 선택 : -> 사용자가 입력 ->
-> 선택후 해당 선택사항에 맞는 정보 입력 -> 인증번호 xxxx 발송완료! 출력 하는 문제
public class java10_t { public static void main(String[] args) { se<String> s = new se<String>(); //문자형 generic class 호출 s.codes(); } } class se<T> extends keycode<T>{ public void codes() { System.out.println("[1.휴대폰인증 , 2.이메일 인증] : "); String menu = super.sc.nextLine(); if(menu.equals("1")) { super.tel(); }else if(menu.equals("2")) { super.email(); }else { System.out.println("해당메뉴는 잘못 입력된 코드입니다."); this.codes(); //재귀 method - 재호출 } super.sc.close(); } }
-- abstract java 별도 파일package java_test_t; //추상클래스 - 난수생성 및 보안코드 발송 import java.util.Scanner; public abstract class keycode<T> { //generic T userinfo; //generic 변수 Scanner sc = new Scanner(System.in); String rnd = ""; //인증번호 4자리 저장하는 변수 String result = ""; public void tel() { //휴대폰 인증 System.out.println("휴대폰 번호를 입력하세요(숫자만) : "); this.userinfo = (T)this.sc.nextLine(); this.result = this.rnd_key(); System.out.println("인증번호" + this.result + "발송하였습니다!"); } public void email() { //email 인증 System.out.println("이메일을 입력하세요 : "); this.userinfo = (T)this.sc.nextLine(); this.result = this.rnd_key(); System.out.println("인증번호" + this.result + "발송하였습니다!"); } public String rnd_key() { //난수4자리 생성 int w=1; while(w<5) { int no = (int)Math.floor(Math.random()*10); this.rnd += no; w++; } return this.rnd; } }
'CLASS > JAVA' 카테고리의 다른 글
#20-3 / collector interface, Comparable (0) | 2024.06.11 |
---|---|
#20-1 / 람다(lamda)코드 사용 방식 (1) | 2024.06.11 |
#19 / Thread (class 형태 , interface 형태) (0) | 2024.05.31 |
#18-2 / Thread를 이용한 멀티 서버 (0) | 2024.05.27 |
#18-1 / 서버 - UDP (0) | 2024.05.27 |