안드로이드를 프로그래밍 할 때 AsyncTask를 사용할 때마다 doInBackground 메소드는 다음과 같습니다.
protected String doInBackground(String... args)
그러나 해당 블록의 어느 곳에서나 인수를 사용할 때 예를 들어 내 프로그램에서 일반 문자열 배열처럼 액세스 할 수 있습니다
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
어느 것이 잘 작동하며 처리하는 데 아무런 문제가 없습니다. 그러나 왜 일반 문자열 배열 대신 (String.. args)를 사용하는지 궁금합니다. 호출 메소드에서 다음과 같이 작성할 수 있기 때문입니다.
new AsyncHandler.execute("argument1","argument2","argument3",...)
인수를 전달할 새 배열을 만드는 대신? 우리는 쓸 수 있지만
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
조금 더 장황하다.
(String ...) 및 String []은 작동 방식에 동의어이지만 배열을 만들 필요가 없기 때문에 인수 전달이 전자를 사용하는 것이 더 쉽습니다? 내가 알 수있는 한 전자는 백그라운드에서 문자열 배열로 변환되므로 동일한 코드로 컴파일되고 '구문 설탕'입니까?
당신은 또한 전화를 수 있다는 점을 제외하고 @FaizanRabbani
—
래칫 괴물
String...
그건 마치String[]
@ratchetfreak 그렇다. 이것은 a 역할을 할 수
—
FaizanRabbani
String[]
있지만 기본적으로 가정한다 String[]
. String
배열에서 다른 매개 변수 를 사용하는 것은 상당히 문제가되었을 것 입니다. 대신에 그들은 유연성을 부여했다 (String ...)
.
@FaizanRabbani 나는 그것이 항상 문자열이 아니라는 것을 알고 있습니다. 단지 예제 =)입니다. Boolean ... 또는 다른 것들도 마찬가지이지만, 우리가 익숙한 main (String [] args) 때문에 String을 사용하는 것을 좋아했습니다. 그리고 당신은 '원하는만큼 많은 문자열을 전달할 수 있습니다'라고 말했는데, 배열로 꽤 많은 문자열을 전달할 수 있습니다. 나에게는 여전히 배열을 사용하여 동일한 결과를 얻을 수있는 것처럼 보이지만 읽기 어렵고 번거 로움이 더 많습니다. 예를 들어 배열 배열을 전달하면 가독성이 약간 떨어집니다. 주로 가독성을위한 것입니까? (감사합니다 btw)
—
Dylan Meeus
@FaizanRabbani 잘은 간단한 포장의
—
래칫 괴물
new String[]{...}
변환에 (실제로 당신이 사용할 때 발생하는 상황 String...
)
(String ...)
String
원하는 만큼 많은 매개 변수를 추가 할 수 있음을 의미String[]
하며 문자열 배열 인 하나의 매개 변수입니다.(String ...)
의 첫 번째 매개 변수에 따라AsyncTask
항상 그렇지는 않습니다String
.