gpt4 book ai didi

java - 如何向可能并不总是存在的函数/构造函数提供参数?

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:50 25 4
gpt4 key购买 nike

我已经创建了这样的自定义可选注释

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.CONSTRUCTOR;

import static java.lang.annotation.RetentionPolicy.RUNTIME;


import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Retention(RUNTIME)
@Target({FIELD,PARAMETER,METHOD,CONSTRUCTOR})
public @interface Optional {
String id() default "";
}

在我的类里面,我使用它的方式如下:

public class A extends BaseClassA {

@Optional
private String id;
public A(@Optional final String id) {
this.id=id;
}
}

基本上我并不总是有这个参数的值。为了简单起见,我在本示例中省略了类中的其他字段。

在我的测试中我想像这样实例化

A anObject = new A("1000") //example of when Id exists
A anObject = new A() // example of when Id doesn't exist.

如何使用此可选注释来创建提供/不提供 id 属性的对象?

最佳答案

最简单的事情是定义两个构造函数。一种采用 id 参数,另一种不带参数。

喜欢:

public class A extends BaseClassA {

@Optional
private String id;
public A(@Optional final String id) {
this.id=id;
}
public A() {
// do nothing...
}
}

除非您打算有多个(可选)参数并且不希望编写很多构造函数...

关于java - 如何向可能并不总是存在的函数/构造函数提供参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com