不,它不能,仅对字段有效。您似乎可以通过反编译从.class获取源代码。这是反编译器错误,如果您查看
java.lang.reflect.Modifiersrc,您将看到
transient并
varargs具有相同的值
public static final int TRANSIENT = 0x00000080;...static final int VARARGS = 0x00000080;
对于字段
0x00000080表示
transient,对于方法(您的情况)表示
varargs。这就是
getObjectjava.util.Locale
src中的样子
public String getObject(LocaleNameProvider localeNameProvider, Locale locale, String key, Object... params) { <-- varargs在.class(字节码)中,varargs由Object []表示为最后一个参数+修饰符位7 =
1(0x80)。我猜反编译器是旧的,根本不知道
varargs哪个是Java 1.5之后的版本,因此将其打印为
transient。



