java
이 자습서에서는 Java Generics, 제네릭 클래스 및 메서드를 만드는 방법 및 예제를 통해 그 장점에 대해 알아봅니다.
Java Generics를 사용하면 다양한 유형의 데이터(객체)와 함께 사용할 수 있는 단일 클래스, 인터페이스 및 메서드를 만들 수 있습니다.
이는 코드를 재사용하는 데 도움이 됩니다.
참고 :일반 기본 유형(int
)에서는 작동하지 않습니다. , float
, char
등).
모든 유형의 데이터와 함께 사용할 수 있는 클래스를 만들 수 있습니다. 이러한 클래스를 Generics 클래스라고 합니다.
다음은 Java에서 제네릭 클래스를 만드는 방법입니다.
class Main {
public static void main(String[] args) {
// initialize generic class
// with Integer data
GenericsClass<Integer> intObj = new GenericsClass<>(5);
System.out.println("Generic Class returns: " + intObj.getData());
// initialize generic class
// with String data
GenericsClass<String> stringObj = new GenericsClass<>("Java Programming");
System.out.println("Generic Class returns: " + stringObj.getData());
}
}
// create a generics class
class GenericsClass<T> {
// variable of T type
private T data;
public GenericsClass(T data) {
this.data = data;
}
// method that return T type variable
public T getData() {
return this.data;
}
}
출력
Generic Class returns: 5 Generic Class returns: Java Programming
위의 예에서 GenericsClass라는 일반 클래스를 만들었습니다. . 이 클래스는 모든 유형의 데이터 작업에 사용할 수 있습니다.
class GenericsClass<T> {...}
여기, T 꺾쇠 괄호 <>
안에 사용됨 유형 매개변수를 나타냅니다. . Main
내부 클래스에서 GenericsClass의 두 개체를 만들었습니다.
Integer
으로 대체됨 . 이제 GenericsClass 정수 데이터와 함께 작동합니다.String
으로 대체됨 . 이제 GenericsClass 문자열 데이터와 함께 작동합니다.제네릭 클래스와 유사하게 모든 유형의 데이터에 사용할 수 있는 메서드를 만들 수도 있습니다. 이러한 클래스를 Generics Method라고 합니다.
다음은 Java에서 제네릭 클래스를 만드는 방법입니다.
class Main {
public static void main(String[] args) {
// initialize the class with Integer data
DemoClass demo = new DemoClass();
// generics method working with String
demo.<String>genericsMethod("Java Programming");
// generics method working with integer
demo.<Integer>genericsMethod(25);
}
}
class DemoClass {
// creae a generics method
public <T> void genericsMethod(T data) {
System.out.println("Generics Method:");
System.out.println("Data Passed: " + data);
}
}
출력
Generics Method: Data Passed: Java Programming Generics Method: Data Passed: 25
위의 예에서 genericsMethod라는 제네릭 메서드를 만들었습니다. .
public <T> void genericMethod(T data) {...}
여기에서 유형 매개변수 <T>
수정자 public
뒤에 삽입됩니다. 반환 유형 void
앞에 .
실제 유형 <String>
를 배치하여 제네릭 메서드를 호출할 수 있습니다. 및 <Integer>
메서드 이름 앞의 대괄호 안에.
demo.<String>genericMethod("Java Programming");
demo.<Integer>genericMethod(25);
참고 :type 매개변수를 포함하지 않고 제네릭 메서드를 호출할 수 있습니다. 예를 들어,
demo.genericsMethod("Java Programming");
이 경우 컴파일러는 메서드에 전달된 값을 기반으로 유형 매개변수를 일치시킬 수 있습니다.
<시간>일반적으로 유형 매개변수는 모든 데이터 유형을 허용할 수 있습니다(기본 유형 제외).
그러나 특정 유형(예:숫자 유형의 데이터 허용)에만 제네릭을 사용하려는 경우 경계 유형을 사용할 수 있습니다.
바인딩된 유형의 경우 extends
을 사용합니다. 예어. 예를 들어,
<T extends A>
이것은 T를 의미합니다. A의 하위 유형인 데이터만 허용할 수 있습니다. .
class GenericsClass <T extends Number> {
public void display() {
System.out.println("This is a bounded type generics class.");
}
}
class Main {
public static void main(String[] args) {
// create an object of GenericsClass
GenericsClass<String> obj = new GenericsClass<>();
}
}
위의 예에서 GenericsClass라는 클래스를 만들었습니다. 표현에 주목하세요, 표현에 주목하세요
<T extends Number>
여기, GenericsClass 경계 유형으로 생성됩니다. 이것은 GenericsClass를 의미합니다. Number
의 자식인 데이터 유형에서만 작동할 수 있습니다. (Integer
, Double
등).
그러나 String
을 사용하여 제네릭 클래스의 개체를 만들었습니다. . 이 경우 다음과 같은 오류가 발생합니다.
GenericsClass<String> obj = new GenericsClass<>(); ^ reason: inference variable T has incompatible bounds equality constraints: String lower bounds: Number where T is a type-variable: T extends Number declared in class GenericsClass<시간>
Java의 제네릭을 사용하여 다양한 유형의 데이터와 작동하는 코드를 작성할 수 있습니다. 예를 들어,
public <T> void genericsMethod(T data) {...}
여기에서 제네릭 메서드를 만들었습니다. 이 동일한 방법을 사용하여 정수 데이터, 문자열 데이터 등에 대한 작업을 수행할 수 있습니다.
유형 매개변수 of 제네릭은 제네릭 코드에 사용된 데이터 유형에 대한 정보를 제공합니다. 예를 들어,
// using Generics
GenericsClass<Integer> list = new GenericsClass<>();
여기서 우리는 GenericsClass Integer
로 작업 중입니다. 데이터 전용.
이제 이 클래스에 Integer 이외의 데이터를 전달하려고 하면 프로그램이 컴파일 시간에 오류를 생성합니다.
컬렉션 프레임워크는 Java에서 제네릭 개념을 사용합니다. 예를 들어,
// creating a string type ArrayList
ArrayList<String> list1 = new ArrayList<>();
// creating a integer type ArrayList
ArrayList<Integer> list2 = new ArrayList<>();
위의 예에서는 동일한 ArrayList 클래스를 사용하여 다른 유형의 데이터를 작업했습니다.
ArrayList
과 유사 , 기타 컬렉션(LinkedList
, Queue
, Maps
등) Java에서도 일반적입니다.
java
자바 작성기 클래스 이 자습서에서는 예제를 통해 Java Writer, 해당 하위 클래스 및 메서드에 대해 알아봅니다. Writer java.io 클래스 패키지는 문자 스트림을 나타내는 추상 슈퍼클래스입니다. Writer 이후 추상 클래스이므로 그 자체로는 유용하지 않습니다. 그러나 하위 클래스를 사용하여 데이터를 쓸 수 있습니다. 작가의 하위 클래스 Writer의 기능을 사용하려면 , 우리는 그 하위 클래스를 사용할 수 있습니다. 그 중 일부는 다음과 같습니다. BufferedWriter OutputStreamWriter
자바 파일 리더 클래스 이 자습서에서는 예제를 통해 Java FileReader와 그 방법에 대해 알아봅니다. FileReader java.io 클래스 패키지는 파일에서 데이터(문자)를 읽는 데 사용할 수 있습니다. InputSreamReader를 확장합니다. 수업. FileReader에 대해 알아보기 전에 , Java 파일에 대해 알고 있는지 확인하십시오. FileReader 만들기 파일 리더를 생성하려면 java.io.FileReader을 가져와야 합니다. 먼저 패키지. 패키지를 가져온 후 파일 판독기를 만드는 방법