Java 메서드의 가변 매개변수 유형 인스턴스 분석
일반적으로 많은 자바 초보자들은 아래의 이 코드를 볼 때 한 가지 질문을 한다. dealArray 방법의 세 가지 작은 점은 무엇입니까?
public class TestVarArgus {
public static void dealArray(int... intArray){
}
public static void main(String args[]){
}
}
이것이 바로 본고에서 토론하고자 하는 문제이다. 가변적인 매개 변수 유형은 부정확한 매개 변수 유형이라고도 부른다.영문 줄임말은 varargus입니다. 복원하면variableargument type입니다.그것의 이름을 통해 이 방법은 매개 변수를 수신할 때 개수가 정해지지 않는다는 것을 직접적으로 알 수 있다.좋아, 지금 이 방법을 먼저 사용해 보자.코드 및 출력 보기:
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
}
출력:1
1 2 3
main 방법의 호출을 통해 이 가변 매개 변수는 매개 변수가 없을 수도 있고 길지 않을 수도 있음을 알 수 있다.여기를 보면 이 부정확한 길이의 매개 변수는 사실 수조 매개 변수와 매우 비슷하다는 것을 알 수 있을 것이다.사실 이런 일도 사실이다.컴파일러는 조용히 이 마지막 인삼을 하나의 수조 인삼으로 바꾸고 컴파일된class 파일에 기호를 하여 이것은 실삼 개수가 변할 수 있는 방법이라는 것을 나타낸다.코드 보기:
dealArray(); //dealArray(int[] intArray{});
dealArray(1); //dealArray(int[] intArray{1});
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3});
여기까지 말하면 이 가변 파라미터가 바로 수조 파라미터인지 검증해 볼 수 있다.코드 보기:
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void dealArray(int[] intArray){// Duplicate method dealArray(int[]) in type TestVarArgus
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
}
위의 코드를 통해 알 수 있듯이 이 두 가지 방법은 충돌하여 다시 불러올 수 없다.여기까지 와서 재미있는 실험을 하나 더 하자.코드 1:
public class TestVarArgus {
public static void dealArray(int... intArray){
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
int[] intArray = {1, 2, 3};
dealArray(intArray); // ,
}
}
코드 2:
public class TestVarArgus {
public static void dealArray(int[] intArray){
for (int i : intArray)
System.out.print(i +" ");
System.out.println();
}
public static void main(String args[]){
dealArray(1, 2, 3); //
}
}
위의 두 단락 코드에서 알 수 있듯이 가변 매개 변수는 수조 클래스 매개 변수를 호환하지만, 수조 클래스 매개 변수는 가변 매개 변수를 호환할 수 없다.사실 두 번째 코드에 대해 말하자면, 컴파일러는 어떤 변환이 가능한지 모른다. 컴파일러는 보기에 dealArray (int, int, int) 클래스의 방법을 정의해야 한다.따라서 수조류 파라미터의 dealArray 방법을 일치시킬 수 없습니다.Java 메서드가 가변 매개변수를 수신하는 경우 다음 코드를 살펴보겠습니다.
public class TestVarArgus {
public static void dealArray(int count, int... intArray){
}
public static void dealArray(int... intArray, int count){// ,
}
public static void main(String args[]){
}
}
이 코드는 가변 매개 변수 유형은 매개 변수 목록의 마지막 항목이 되어야 하며, 정해진 길이의 매개 변수 앞에 놓을 수 없다는 것을 설명한다.우선순위라는 단어가 떠올랐을 거예요.정확한 설명이 없기 때문에 단지 이런 규정일 뿐입니다. 여기서'우선순위'라는 단어를 빌려 이해할 수 있습니다. 아래의 코드를 보십시오.
public class TestVarArgus {
public static void dealArray(int... intArray){
System.out.println("1");
}
public static void dealArray(int count, int count2){
System.out.println("2");
}
public static void main(String args[]){
dealArray(1, 2);
}
}
코드를 붙이면 출력 2가 1이 아닌 것으로 추정된다.여기에 기억해야 할 것은 정해진 길이와 일치하는 방법이 있다면 우선적으로 이 방법과 일치해야 한다는 것이다.부정확한 파라미터를 포함하는 그 재부팅 방법은 마지막에 선택되었다.마지막으로main 방법의 매개 변수는 하나의 수조 유형이라는 것을 모두가 알고 있다. 그러면 이것은 사실 부정확한 매개 변수 유형으로 바꿀 수 있다.번역 오류가 있는지 없는지 한번 해 보세요.
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 대한 학습에 어느 정도 참고 가치가 있다고 믿습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.