java
다이아몬드 연산자는 Generics에서 코드를 더 읽기 쉽게 만들기 위해 Java 7에 도입되었습니다. 제네릭은 인수의 한 유형입니다. generic을 사용하면 클래스 메서드에서 처리할 모든 종류의 객체를 전달할 수 있습니다. 예를 들어 Java 7 이전에 문자열 목록을 생성하는 경우 다음 구문을 사용하여 ArrayList 객체로 문자열 목록을 인스턴스화해야 합니다.
List<String> listOfStrings = new ArrayList<String>();
Java 7부터는 다이아몬드 연산자를 사용하여 위 구문을 다음과 같이 단순화할 수 있습니다. −
List<String> listOfStrings = new ArrayList<>();
그러나 익명 내부 클래스에서는 사용할 수 없습니다. 예를 들어, Java 9 이전 버전에서는 아래 구문의 다이아몬드 연산자에서 객체 유형을 생략할 수 없습니다.
Handler<Integer> intHandler = new Handler<Integer>(1) {
@Override
public void handle() {
System.out.println(content);
}
};
Java 9에서는 다이아몬드 연산자를 익명 클래스와 함께 사용하여 코드를 단순화하고 가독성을 높일 수 있습니다.
Handler<Integer> intHandler = new Handler<>(1) {
@Override
public void handle() {
System.out.println(content);
}
};
아래 예에서는 일반 인수를 허용하는 추상 클래스 Handler에 대한 익명 클래스를 생성하고 익명 클래스를 생성하는 동안 객체 유형을 전달합니다. 그렇지 않으면 프로그램이 컴파일되지 않으므로 유형 인수를 전달해야 합니다.
public class Tester {
public static void main(String[] args) {
// create an Anonymous class to handle 1
// Here we need to pass Type arguments in diamond operator
// before Java 9 otherwise compiler will complain error
Handler<Integer> intHandler = new Handler<Integer>(1) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler.handle();
// create an Anonymous class to handle 2
Handler<? extends Number> intHandler1 = new Handler<Number>(2) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler1.handle();
Handler<?> handler = new Handler<Object>("test") {
@Override
public void handle() {
System.out.println(content);
}
};
handler.handle();
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) {
this.content = content;
}
abstract void handle();
}
위 프로그램을 컴파일하고 실행해 보면 다음과 같은 결과가 나올 것입니다.
1 2 Test
Java 9에서는 아래와 같이 익명 클래스와 함께 <> 연산자를 사용할 수 있습니다.
아래 예에서는 유형 인수를 전달할 필요가 없으므로 익명 클래스를 생성하는 동안 일반 인수를 허용하지만 객체 유형 없이 추상 클래스 Handler에 대한 익명 클래스를 생성했습니다. 컴파일러는 유형 자체를 추론합니다.
public class Tester {
public static void main(String[] args) {
// create an Anonymous class to handle 1
// Here we do not need to pass Type arguments in diamond operator
// as Java 9 compiler can infer the type automatically
Handler<Integer> intHandler = new Handler<>(1) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler.handle();
Handler<? extends Number> intHandler1 = new Handler<>(2) {
@Override
public void handle() {
System.out.println(content);
}
};
intHandler1.handle();
Handler<?> handler = new Handler<>("test") {
@Override
public void handle() {
System.out.println(content);
}
};
handler.handle();
}
}
abstract class Handler<T> {
public T content;
public Handler(T content) {
this.content = content;
}
abstract void handle();
}
위 프로그램을 컴파일하고 실행해 보면 다음과 같은 결과가 나올 것입니다.
1 2 Test
java
적합한 금속 제작 파트너를 찾는 것은 다양한 요인으로 인해 까다로울 수 있습니다. 종종 금속 제조 공급 파트너는 저비용 솔루션을 제공할 수 있는 능력만을 기준으로 선택됩니다. 비용은 여전히 중요한 요소이지만 제조 회사의 전반적인 역량, 경험 및 품질을 고려하는 것이 중요합니다. 이 블로그 게시물은 조달 전문가가 잠재적인 금속 제조 회사에 질문할 수 있는 유용한 질문을 개발하는 데 도움이 되는 것을 목표로 합니다. 간략한 개요 금속 가공 산업은 지난 10년 동안 변화를 겪었습니다. 정의에 따르면 금속 가공은 서로 다른 금속 조각
전문가들은 가공되는 부품의 크기, 모양, 기능 및 재료에 따라 CNC 공작 기계를 최대한 활용하기 위해 수많은 CNC 밀링 기술을 사용합니다. 기계 산업에서 사용되는 이러한 기술 중 하나는 다운 밀링 및 포스트 밀링과 같은 다양한 절단 방법을 사용하는 것입니다. 특정 응용 분야에서 올바른 절단 방법을 사용하는 것은 성공적인 가공에 중요한 역할을 합니다. 상호 방향에 따라 주변 밀링은 상부 밀링과 하부 밀링의 두 가지 범주로 나눌 수 있습니다. 상향 밀링 및 하향 밀링은 두 가지 일반적인 CNC 밀링 프로세스입니다. 각 방법에는 고