Java 선택적 매개 변수
- 메서드 오버로딩을 사용하여 Java에서 선택적 매개 변수 포함
-
Optional
컨테이너 객체를 사용하여 Java에서 선택적 매개 변수를 갖습니다 -
Build Pattern
을 사용하여 Java에서 선택적 매개 변수 포함 -
Varargs
를 사용하여 Java에서 선택적 매개 변수 포함
Java 클래스에서 메서드 나 함수를 디자인 할 때 일부 인수는 실행을 위해 선택 사항 일 수 있습니다. Java에는 선택적 매개 변수가 없지만이 기사에서 설명하는 다음 기술을 사용하여 선택적 매개 변수를 시뮬레이션 할 수 있습니다.
메서드 오버로딩을 사용하여 Java에서 선택적 매개 변수 포함
클래스에 이름은 같지만 매개 변수가 다른 메서드가 여러 개있는 경우이를 메서드 오버로딩이라고합니다. 여기에는mul
이라는 동일한 이름을 가진 두 개의 메소드가있는Multiply
클래스가 있습니다. 메서드에 전달 된 인수는 서로 다릅니다. 하나는 두 개의 int 유형 인수를 사용하고 다른 하나는 세 개를 사용합니다.
class Multiply {
static int mul(int a, int b) {
return a * b;
}
static int mul(int a, int b, int c) {
return a * b * c;
}
}
class TestOverloading {
public static void main(String[] args) {
System.out.println(Multiply.mul(2, 11));
System.out.println(Multiply.mul(2, 2, 11));
}
}
출력:
22
44
Optional
컨테이너 객체를 사용하여 Java에서 선택적 매개 변수를 갖습니다
Java에서Optional
은 널이 아닌 값을 포함하거나 포함하지 않을 수있는 컨테이너 객체입니다. 값이있는 경우isPresent()
메소드는 true를 리턴하고get()
메소드는 값을 리턴합니다.
null 값이 예상되는 경우이 클래스의ofNullable()
메소드를 사용할 수 있습니다. 빈Optional
개체를 반환하고 예외를 throw하지 않습니다. 여기서lastName
변수는Student
클래스 개체에 대해 null로 전달되므로 null 값을 포함 할 수있는Optional
개체를 만들었습니다.
isPresent()
메소드는 값이 있는지 확인합니다. 그렇지 않으면 아래 코드와 같이 기본 문자열이 할당됩니다.
import java.util.Optional;
public class Main {
public static void main(String args[]) {
Student("John", null, 25);
}
private static void Student(String name, String lastName, int age) {
Optional<String> ln = Optional.ofNullable(lastName);
String a = ln.isPresent() ? ln.get() : "Not Given";
System.out.println("name : " + name + ", lastname : " + a + ", age : " + age);
}
}
출력:
name : John, lastname : Not Given, age : 25
Build Pattern
을 사용하여 Java에서 선택적 매개 변수 포함
빌드 패턴
의 목적은 복잡한 객체 구성을 표현에서 분리하는 것입니다. 객체를 생성하는 데 필요한 로직 및 기본 구성 값은builder
클래스에 포함되어 있습니다.
여기 코드에서 추가 클래스UserBuilder
를 사용합니다.이 클래스는 불변성을 잃지 않고User
객체를 빌드하기 위해 필요한 모든 속성과 선택적 매개 변수 조합을 포함합니다. User
클래스에는 불변성을 유지하기 위해 getter 만 있고 setter가 없습니다.
public class User {
private final String firstName; // required
private final String lastName; // required
private final int age; // optional
private final String email; // optional
private User(UserBuilder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.email = builder.email;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
@Override
public String toString() {
return "User: " + this.firstName + ", " + this.lastName + ", " + this.age + ", " + this.email;
}
public static class UserBuilder {
private final String firstName;
private final String lastName;
private int age;
private String email;
public UserBuilder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public UserBuilder email(String email) {
this.email = email;
return this;
}
public User build() {
User user = new User(this);
return user;
}
}
}
TestUser
클래스에서UserBuilder
를 사용하여User
클래스 개체를 만듭니다. user1
오브젝트의 경우 모든 속성을 전달하고user2
오브젝트의 경우age
및email
인수를 전달하지 않습니다. 따라서 선택적 매개 변수에 대한 기본값을 사용합니다. build()
메소드는User
객체를 생성하고 반환합니다.
public class TestUser {
public static void main(String args[]) {
User user1 = new User.UserBuilder("John", "Doe").age(24).email("john.doe@dex.com").build();
System.out.println(user1);
User user2 = new User.UserBuilder("Jack", "Luther").build();
System.out.println(user2);
}
}
출력:
User: John, Doe, 24, john.doe@dex.com
User: Jack, Luther, 0, null
Varargs
를 사용하여 Java에서 선택적 매개 변수 포함
Java에서Varargs
(가변 길이 인수)는 메소드가 0 개 또는 여러 개의 인수를 허용하도록 허용합니다. 이 특정 접근 방식을 사용하면 유지 관리 문제가 발생하므로 사용하지 않는 것이 좋습니다.
여기 아래 코드에는display()
메소드가있는VarargsExample
클래스가 있습니다. 이 메소드는String
유형의 임의 개수의 매개 변수를 사용합니다. varargs
를 사용하는 동안 염두에 두어야 할 몇 가지 규칙은 각 메소드가varargs
매개 변수를 하나만 가질 수 있으며 마지막 매개 변수 여야한다는 것입니다.
public class VarArgsCheck {
public static void main(String args[]) {
VarargsExample.display();
VarargsExample.display("here", "are", "the", "varargs", "to", "check");
}
}
class VarargsExample {
static void display(String... values) {
String arr[] = values;
System.out.println("display method invoked ");
System.out.println("Value length " + arr.length);
}
}
출력:
display method invoked
Value length 0
display method invoked
Value length 6
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn