【发布时间】:2013-04-20 11:29:09
【问题描述】:
在一个java类java.util.Locale中,我发现关键字transient标记了一个方法。
public final class Locale
implements Cloneable, Serializable
{
private static class LocaleNameGetter
implements sun.util.LocaleServiceProviderPool.LocalizedObjectGetter
{
public transient String getObject(LocaleNameProvider localenameprovider, Locale locale, String s, Object aobj[])
{
if(!$assertionsDisabled && aobj.length != 2)
throw new AssertionError();
int i = ((Integer)aobj[0]).intValue();
String s1 = (String)aobj[1];
switch(i)
{
case 0: // '\0'
return localenameprovider.getDisplayLanguage(s1, locale);
case 1: // '\001'
return localenameprovider.getDisplayCountry(s1, locale);
case 2: // '\002'
return localenameprovider.getDisplayVariant(s1, locale);
}
if(!$assertionsDisabled)
throw new AssertionError();
else
return null;
}
谁能告诉我为什么会这样?
【问题讨论】:
-
@user85121 你能提供你看到的链接吗?
-
我检查了 jdk 1.6 源,它没有
transient关键字 -
@user85121,你有什么版本的jdk?这是一个重要的问题,以便检查特定来源中发生了什么。如果这段代码是反编译器的结果,作者应该提到这一点!
-
作者好像消失了……:(