는 Java 지원을 기본 매개 변수 값을?
일부 왔는지 Java 코드를 통해 해당 경식도 다음과 같은 구조:
public MyParameterizedFunction(String param1, int param2)
{
this(param1, param2, false);
}
public MyParameterizedFunction(String param1, int param2, boolean param3)
{
//use all three parameters here
}
내가 알고 있는 매개변수입니다 기본값입니다 c++에서 지정할 수 있습니다. 예를 들면 다음과 같습니다.
void MyParameterizedFunction(String param1, int param2, bool param3=false);
이 같은 구문을 높여줍니까 Java 지원? 이유는 이 두 단계 구문을 사용하는 것이 더 좋을 수도 있습니까?
1554
20
아니, 얼마나 jave 핸들을 찾은 이 구조 (즉, 대신 과부하가 함께 기본 매개변수).
[1]: https://en.wikipedia.org/wiki/Joshua_Bloch # 서지
아니, 하지만 < 사용할 수 있습니다. (http://en.wikipedia.org/wiki/Builder_pattern"), a href = " >;;;;; a href = " < pattern< 구성기는 /a> 설명한 대로, 이 스택 오버플로입니다 answer< /a> > https://stackoverflow.com/questions/222214/managing-constructors-with-many-parameters-in-java-1-4/222295 # 222295";;).
빌더 패턴 오토메이티드 설명한 대로, 이 같은 코드를 작성할 수 있습니다 링크됨
가질 수 있는 일부 필드용 기본값과 또는 그렇지 않을 경우에는 선택적입니다.
여러 가지 방법으로 기본 매개변수입니다 시뮬레이션하려면 자바 가상 머신 (jvm) 에:
void foo (문자열이어야 정수 a, b) { //. }
void 푸 (문자열 a) { 푸 (a, 0); 여기서 0 은 b 의 기본값입니다 // }
푸 (" a",, 2). 푸 (a" ";).
39 한 것이, 이 한계를 외곽진입 doesn& 경우 두 개의 선택적 매개 변수가 t 작동합니까 같은 유형 및 이들을 생략할 수 있습니다.
a) 같은 유형의 모든 옵션임 매개변수입니다.
void 푸 (문자열 a, 정수. b) { 정수 b1 = 발렌크스 >. 0? b [0]: 0; 정수 b2 = 발렌크스 >. 1? b [1]: 0; //. }
푸 (a" ";). 푸 (" a",, 1, 2).
b) 가지유형의 옵션임 매개변수입니다 다를 수 있습니다.
void 푸 (문자열 a, 객체에는. b) { 정수 b1 = 0; 구체화하십시오 b2 = " ";; if (발렌크스 >. 0) { if (! (b [0] instanceof Integer) { 새로운 것을 이가라구멍렉세페시옹 (." ";). } b1 = (정수) b [0]; } if (발렌크스 >. 1) { if (! (b [1] instanceof 구체화하십시오) { 새로운 것을 이가라구멍렉세페시옹 (." ";). } b2 = (String) b [1]; //. } //. }
푸 (a" ";). 푸 (" a",, 1). 푸 (,, 1, " " a" b2";).
이 경우 주요 단점이 외곽진입 에로남이네 선택적 매개 변수가 서로 다른 유형의 패배하셨습니다 정적 타입 검사. 또 다른 방법으로 구분할 수 있다면 다른 의미를 가지고 각 매개변수입니다 합니다.
void 푸 (문자열 a, b, c 정수 (Integer) { b = b = null?! b: 0; c = c = null?! c: 0; //. }
푸 (,, " a" nulll, 2).
이제 모든 인수만 값을 수준들과 널일 수 있지만 기본적으로 제공해야 합니다.
void 푸 (문자열 a, Optional< Integer>; 보프트) { 정수 b = 보pt.리스프레센트 ()? 보pt.제 (): 0; //. }
푸 (,, " a" 오티오나라자로프 (2)); 푸 (,,, 정작 " a" Optional.< Integer> ());
그러나 한 가지 옵션 계약을 통해 메서드입니다 명시성 kingdome. seattle. 요청자에게 등 세부 서명입니다 너무, 볼 수도 있다.
이 패턴은 데사용됩니다 구성자를 및 의해 구현됩니다. 구성기는 1 pattern. 구성기는 소개합니까 별도의 구성기는 클래스:
클래스 Foo { 한 민간 최종 문자열이어야. 개인 최종 정수 b;
푸 (문자열이어야 정수 a, b) { 티스트라 = a; 티s.b = b; }
//. }
클래스 포브유더 { a = " 보면안돼 문자열이어야 ";; 개인 정수 b = 0;
포브유더 세타 (문자열 a) { 티스트라 = a; 이 반품하십시오. }
포브유더 세바 (정수 b) { 티s.b = b; 이 반품하십시오. }
Foo 구축하십시오 () { 새로운 반품하십시오 푸 (a, b). } }
Foo foo = new 포브유더 () (), 스베일드 오스타 (a" ";)
대부분의 경우 너무 크고 Maps. 매개 변수의 수를 1. 그들을 기본값과 일반적으로 사용되는 방법은 그들의 이름 / 값이 인수만 맵으로 전달할 수 있습니다.
void foo (Map<, 문자열, Object>. 매개변수) { A = " 문자열이어야 ";; 정수 b = 0; if (파라머터스.콘타린스키 (a" ";)) { if (! (파라머터스이제 (a" ";) instanceof Integer) { 새로운 것을 이가라구멍렉세페시옹 (." ";). } a = (String) 파라머터스이제 (a" ";). } else if (파라머터스.콘타린스키 (b" ";)) { //. } //. }
푸 (ImmutableMap.<, 문자열, 의 (Object>. a";; a" " ". " b" 2gb/s;; " " value" d";;;));
이러한 방식은 바람직한 결과를 얻기 위해 유념하십시오 중 하나를 조합할 수 있습니다.
안타깝게도, 아니.
죄송합니다. 그렇습네다.
자바 가상 머신 (jvm) 에 1.5 로 쓸 수 있다.
근데 너 기분은 자세한 정보는 생성 여부에 따라 달라야 합니다
각 가능하다.
여러 인스턴스용으로 데포터블 매개변수입니다:
자바 가상 머신 (jvm) 에 1.5 로 쓸 수 있다.
이 말 수 있는 기본 구문을 일치시킵니다 c++컴파일러는 디렉토리에만 매개변수입니다 &prs. 목록.
그 차이가 있을 수 있는 지 확인하는 시간 유형 문법, 이로 인해 그 매개 변수와 자료형 검사 중에 실행하십시오 데포터블 c++컴파일러는 컴파일하십시오.
아니, 하지만 매우 쉽게 그들을 에뮬레이트합니다 수 있습니다. 도대체 무엇이 c++컴파일러는 없었다.
Java 로 될 것이라고 과부하된 기능:
앞서 언급한 것은 기본 매개변수입니다 모호한 경우가 발생할 수 있는 함수 오버로드. 즉 단순히 성립하지 않는 경우는 c++컴파일러는 볼 수 있습니다. 그래, 어쩌면 모호한 사례를 만들 수 있지만, 이러한 문제를 쉽게 처리할 수 있습니다. # 39 는 단순히 wasn&, Java, C++ 언어로 그들이성년에 작성자 t 는 - 이 때문일 것이다, 자신들이 훨씬 간단해진다는 오른쪽맞춤, 다른 문제다. 우리 # 39 는 Java 상태였기 때문에, 그는 기울이나 don& 단순한 것 같지는 않다.
할 수 있는 JVM 에 스칼라 호환됩니까 실행됩니,) 는 java 프로그램. http://www.scala-lang.org/
예:
근데 왜 내가 여기서 구현할 수 있는 내용의 명백하네 단순히 " default"; 매개변수입니다 교도관님도요?
사용할 경우 기본값입니다 됩니다
그리고 만약 당신이 마음에 wouldn& # 39 기본값입니다 사용하는 것과, 사용할 수 있습니다.
앞에서 언급한 것처럼 [코틀린] 는 스칼라 (https://kotlinlang.org/docs/reference/functions.html # 기본 인수만) 도 규모의 언급하지 않았다. 함수가 매개변수를 가질 수 있는 코틀린 기본값과 수도 있습니다 물론 다른 매개변수입니다) 는 다음과 같은 뜻이 있다.
Jvm 이 같은 스칼라, 코틀린 실행됩니 할 수 있고 쉽게 통합되므로 기존 자바 프로젝트.
일반적으로 jave doesn& 막아보자구 # 39, 설탕, 통사 (임의) 할 수 있기 때문에 별로 없는 단순 욕금지 많이 했습니다.
아니요.
같은 비헤이비어를 반군지역 디스크입니다. diskid 똑똑하시네 설정값으로 객체에 의해 얻을 수 있습니다. 하지만 그 어떤 케이스에 따라 편리하게 사용할 수 있습니다.
It is not supported 수축됐는데 몇 가지 옵션을 가진 패턴을 사용하여 매개변수입니다 객체에는 같은 일부 구문 설탕.
우리가 그들을 '와' 이 샘플링합니다 chunghwa 파라메트로비치 기본값과 오버라이드합니다 동급 인스턴스입니다 초기화하지 섹선에서 ' {param1 = 10; param2 = " bar"} ';;;
이 솔루션은 시도하시겠습니까.
유사한 접근 방식을 <, https://stackoverflow.com/a/13864910/2323964>. 자바 가상 머신 (jvm) 에 사용할 수 있는 인터페이스입니다 8 은 사용할 수 있는 기본 게터. 이 공백 앞으로 더욱 강화될 것이 아니라, # 39 에 대한 자세한 정보 및 it& 모크이블 큰 관심을 가지고 있을 때 where you want to draw a bunch of 인스턴스들도 실제로 매개변수입니다.
39, ve 이제 i& 데 사용할 수 있는 방법을 강구해야 상당 기간 이 메서드입니다 반환 값 # 39, 지금까지 내가 본 모든 참조용이므로 haven& t 생각해봤죠 추가 여긴 것이 유용할 수 있습니다.
"' int foo (int a) { 뭔가 수신기마다 // 반환합니다. }
int 푸 () { 반품하십시오 푸 (0); 여기서 0 은 kingdome. seattle. 기본값입니다 // } "'
Java 메소드 호출 구성기는 를 사용할 수 있는 자동으로 생성할 구성기는 기본값입니다.
클래스, 인터페이스, 또는 @GenerateMethodInvocationBuilder 추가하기만 수 있는 방법을 @Default 매개 변수가 where you want 기본값입니다. A 구성기는 지정한 기본값에는 사용하여 컴파일 타임에 생성될 수 있는 주석입니다.
다음 메서드를 호출할 수 있습니다.
또는 다른 무언가를 기본값에는 설정합니다.
이 같은 문제를 반단면 수십 가지 이상의 정적 팩토리 패턴, 결국 도착할 수 있습니다. 크립토 API 를 볼 수 있는. 하지만 이 방법을 생각해 정렬하려면 설명하기 힘들다. 기본 생성자, 또는 그 밖의 경우, 중괄호 () 는 할 수 있는 유일한 방법은 전파하려면 스테이드 넘어 부울입니다 이바리드. (v 로 nulll 함께 기본값입니다 실패했습니다. 구성자를) 또는 정보를 얻을 수 있는 것은 결코 예외가 있을 때 다시 필드에서 특징이다.
내가 할 일을 역인 줄 수 수정하십시오 코드를 쓰기 못하니이는 구성자를 데릭쉐퍼드와. 즉, 두 줄 구성자를 건설 이바리드 dell. 객체에는 사용하여 내가 찾을 수 있지만, 나는 몇 가지 이유로 - 로 마이그레이션하려면 정적임 팩토리 패턴. 그냥 많이유 메서드 호출 할 수 있는 것 () 의 경우 문제가 될 수 있지만, 아직도 substituted& # 39, & # 39 설정값으로 동기화됨 우수 (보다)
내 생각엔 우리가 해야 할 일을 한 것처럼 서로 마주 본 기본값입니다 문자열이어야 = null 이 문제를 해결할 새로운 문자열 (" ";). 그 전에 문자열 변수를 할당 nulll 확인할지 멤버로 하고 구성자를 전달됩니다.
컴퓨터 과학, 성층권 기초형상 양은 매우 주목할 만한 수행되 자바 가상 머신 (jvm) 에.
C++ 및 드릴링됩니다 diskid 구입업체별 라이브러리, 예. # 39 의 대규모 인한 서버 it& 그들을 jave 아웃런 수 있는 대규모 툴박스. 검토인 정적임 초기화 블록, stay with us.
This is how I did it. # 39, & # 39 의 편리한 대로 it& 아니라 아마도 내장된 옵션임 argument& # 39. 하지만, 사용자 정의 매개변수입니다 상대로 업무 완료.
난 그냥 내가 할 수 있는 문자열 (string) 또는 디이브이 호출하십시오 인컨텍스트 함께 이 같은 방식으로 이름을 호출하십시오 문자열으로 및 부울 값. 이 경우, 설정 위페클레인 대체할 수 있는 모든 텍스트의 진정한 내 extarea 제공된 구체화하십시오. 설정값입니다 위페클레인 거짓 또는 모든 텍스트를 단순히 것가운데 아웃해야 첨부됩니다 함께 제공된 extarea.
또한, 나는 단지 두 가지 방법을 디이브이 I am not 리피팅 코드의 기능을 추가할 수 있는 새로운 방법을 만들어 같은 이름의 extarea 재설정하십시오 미디어만을 사용하여 추가된 부울입니다.
사실 제가 생각하기에는 & # 39 는 Java 제공하는 것보다 조금 더 옵션임 argument& # 39;; 이후 우리 매개변수입니다 다음 코드를 상술합니다 기본값과 할 것 "이라고 말했다. 이 예에서 don& # 39, 내가 걱정할 필요가 없는 모든 iqn. 또 다른 방법을 추가한 거절당했군요. # 39 의 쉽게 읽을 수 있지만, 장기적으로 내 클래스용 it& 내 소박한 했다.
아니, 하지만 우리는 다른 형태로 함수 오버로드.
없을 때 불렀으매 매개변수입니다 통과
때 불렀으매 " a"; 매개변수입니다 전달되었습니다.
통과 때 불렀으매 매개변수입니다 b