是否可以指定一个默认为null的注释?
我想要实现的是可选的注释属性。
例如
public @interface Foo {
Config value();
}
public @interface Config {
boolean ignoreUnknown() default false;
int steps() default 2;
}
我想使用@Foo(没有指定值,所以它应该是某种可选的),我也希望能够写出这样的东西:
@Foo (
@Config(
ignoreUnknown = true,
steps = 10
)
)
是否可以使用注释做这样的事情?
我不想做这样的事情 public @interface Foo {
boolean ignoreUnknown() default false;
int steps() default 2;
}
因为我希望能够区分是否已设置属性(而不是是否具有默认值)。
描述起来有点复杂,但我正在研究一个生成Java代码的Annotation Processor。但是在运行时我想设置一个应该用于所有@Foo的默认配置,除了那些使用@Config设置了自己配置的人。
所以我想要的是这样的:
public @interface Foo {
Config value() default null;
}
但据我所知,这是不可能的,对吧?有没有人知道这种可选属性的解决方法?
答案 0 :(得分:23)
不,您无法使用null
作为注释属性值。但是,您可以使用数组类型并提供空数组。
public @interface Foo {
Config[] value();
}
...
@Foo(value = {})
或
public @interface Foo {
Config[] value() default {};
}
...
@Foo
答案 1 :(得分:0)
尝试:
import pandas as pd
import requests
import json
url = 'http://api.geonames.org/searchJSON?'
df = pd.read_excel('Book.xlsx', sheet_name='Sheet1', usecols="B")
for item in df.place_name:
df.place_name.head()
params ={ 'username': "XXXXXX",
'name_equals': item,
'maxRows': "1"}
e = requests.get(url, params=params)
pretty_json = json.loads(e.content)
for item in pretty_json["geonames"]:
print (json.dumps(item["geonameId"], indent=2))
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(item["geonameId"], f, ensure_ascii=False, indent=4)
#print(e.content)