2009-04-10 4 views
2

Java 언어에서 가장 널리 사용되는 메소드 중 하나 일 수 있기 때문에 왜 문자열 배열을 허용해야하며 그 문자열이 없으면 작동하지 않는 이유는 무엇입니까? 다만, 특히 자바 프로그램의 대부분 때문에, 명령 줄 인수를 받아 들일 수있는 것보다 이것에 더 높은 목적이 있는가Java main() 메서드가 String args 배열을 허용하는 이유는 무엇입니까?

public static void main() {} 

public static void main(String[] args) {} 

이상 : 함께 예를 들어, 난 항상 살 수 GUI 기반이며 명령 줄을 통해 args를받을 필요가 없습니다?

+0

아마도 인수를 무시 하겠지만 인수를 지원하려는 사람은 무엇입니까? 일반적으로 명령 줄에서 무엇입니까? 명령 줄 등은 일반적으로 Steing 배열을 통해 인수를 전달합니다. 그들에 대해 신경 쓰지 않는다면 무시하십시오. 지원 추가 fir main()은 예술 유무에 상관없이 모호성을 추가합니다. –

답변

9

심지어 gui 구동 Java 응용 프로그램은 몇 가지 기본 방법으로 시작됩니다. "더 높은 목적"은 명령 줄 인수를 받아 본 적이 없습니다.

목적은 단지 인수를 허용하는 것입니다. 기간. Java가 아닌 모든 프로그램을 시작할 때마다 인수를 전달하는 구문이 필요합니다.

+0

그게 내 질문의 일부에 대한 대답이지만 그 주장은 무엇에 사용됩니까? –

+1

그들은 무엇을하도록 설계되었습니다. 일부 GUI 도구에 표시 할 파일 이름이거나 퍼즐을 생성하려는 숫자 일 수 있습니다. – Peter

+0

이 디자인 선택은 명령 줄 인수 규칙에 따라 결정되었습니다. C 프로그램의 표준 진입 점과의 유사성은 우연이 아닙니다. – erickson

2

프로그램의 "대다수"는 수행해야 할 작업의 측면에서 실제로 큰 차이를 내지 않습니다. 커맨드 라인 args에 의해 구동되는 커맨드 라인 프로그램은 여전히 ​​많이 있습니다. 기존 :

+0

필요한 경우에만 인수를 받아야 함을 의미합니다. 비록 당신이 그들을 필요로하지 않는다면 그들을 받아 들일 필요가 없습니다. 그것은 언어 디자이너의 선택이었습니다. –

+0

귀하의 진술은 사실입니다. 이 특별한 경우에는 Java 언어 디자이너 (저는 C# fanboy입니다)와 함께합니다. 사용되지 않은 인수를 가지기는 어렵지 않지만 언어의 일관성을 촉진합니다. 어쨌든, 이것은 아주 사소한 문제이며, 랭 디자이너가 선택한 선택입니다. 귀하의 진술에 추가 할 –

4

예 "이것에 더 높은 목적 (..)이 있습니다."

2

GUI 프로그램이 많으면 시작시 동작을 제어하기 위해 명령 줄 스위치를 허용하는 기능을 제공합니다.

+0

에 대해 많이 이야기하지 않고, 많은 GUI 프로그램은 인수로 "파일 이름"을 허용합니다. (실행 파일에 끌어온 MS 워드 문서를 생각해보십시오.) –

1

args를 통해 많은 Java 프로그램이 명령 행을 통해 수신됩니다. javac, ant, maven 등을 생각해보십시오.

12

더 유연 할 수 있다는 데 동의합니다. int 프로세스의 종료 코드로 반환 값을 사용하여 반환

static void Main() 
static void Main(string[] args) 
static int Main() 
static int Main(string[] args) 

버전 : 예를 들어 C#에서,이 모든 허용 진입 점입니다. 인수를받는 것에 신경 쓰지 않는다면, 사용하지 않는 버전 중 하나를 사용할 수 있습니다. 프로그램이 시작될 때 주어진 모든 인수는 무시됩니다.

그렇습니다. 이 더 융통성이 있습니다. 그러나 Java에서 중요한 문제로 저를 결코 두렵게 생각하지 않습니다.

+0

4 가지 기본 방법을 모두 제공 할 때 위의 내용 중 어느 것이 사용될 것입니까? – Peter

+0

모든 것을 제공하려고하면 구문 오류가 반환됩니다. –

+2

글쎄, 리턴 타입으로 오버로드 할 수 없기 때문에 모든 4를 제공 할 수는 없습니다. 그러나 두 개를 입력하면 CS0017 오류가 발생합니다. –

2

많은 자바 프로그램이 적어도 일부 매개 변수를 사용하기 때문에 그런 것 같아요. 자바는 (다른 무엇보다도 자바의 통 신적 영감 인) C와 마찬가지로 main에 매개 변수로 이들을 제공하는 가장 좋은 방법을 고려합니다.

심지어 GUI 프로그램은 종종 명령 줄 매개 변수를 사용합니다. 일반적으로 실행되는 셸이 (기본적으로) 이러한 매개 변수를 묻지 않기 때문에 지원되지 않는다는 것을 의미하지는 않습니다.

6

프로그램 항상은 명령 줄 인수를 취합니다. 프로그래머가 무엇을 위해 사용되는지 결정하는 것은 프로그래머의 몫입니다.

문자열 배열을 사용하지 않고 메인을 구현하면 시작 로직이 복잡해지고 혼란스럽고 오류가있는 동작이 발생할 수 있습니다. 단 하나의 매개 변수 선언을 작성하지 않는 것이 논란의 여지가 있습니다 (전체 프로그램에서!)

Java의 전체적인 자세한 표시가 & 인 Eclipse와 같은 IDE에서 공통적 인 템플릿 용 템플릿을 지원한다는 점을 감안할 때 어디에서 실제로 문제가 발생하는지 알 수 없습니다.

관련 문제