新手报到 ~ 今天看到 java 一段代码,完全不能理解,希望有大神能给点提示^_^

2016-01-11 12:26:54 +08:00
 springzero

代码是 java.lang.StringCoding 类中的一个方法

static char[] decode(byte abyte0[], int i, int j)
{
String s = Charset.defaultCharset().name();
return decode(s, abyte0, i, j); //第一个 return
UnsupportedEncodingException unsupportedencodingexception;
unsupportedencodingexception;
warnUnsupportedCharset(s);
return decode("ISO-8859-1", abyte0, i, j); //第二个 return
unsupportedencodingexception;
MessageUtils.err((new StringBuilder()).append("ISO-8859-1 charset not available: ").append(unsupportedencodingexception.toString()).toString());
System.exit(1);
return null;
}
这里第二个 return ( return decode("ISO-8859-1", abyte0, i, j))应该在某种情况下会运行到,。。。但是想不明白

不明白这里 return 为什么可以有多个(串联),直接百度函数使用多个 return ,都不是我要表达的意思,实在没办法,只能找社区碰碰运气。。。求大神指点

4527 次点击
所在节点    Java
22 条回复
ifconfig
2016-01-11 12:34:08 +08:00
这代码,看了也是醉了
1023400273
2016-01-11 12:35:24 +08:00
反编译出来的吧
Zzzzzzzzz
2016-01-11 12:36:21 +08:00
你看了一份把 try 和 catch 都给砍掉的代码了.
xpol
2016-01-11 12:36:23 +08:00
不是 markdown 可以缩进吗。这样没法看。
datou552211
2016-01-11 12:37:28 +08:00
这是不是有问题,返回应该在条件语句后面
hepin1989
2016-01-11 12:38:07 +08:00
下面的是 deadcode 啊
ybjaychou
2016-01-11 12:39:42 +08:00
放到 IDE 里面看看
airqj
2016-01-11 12:42:58 +08:00
这根本是在写英语作文啊
Cloudee
2016-01-11 12:47:33 +08:00
应该是反编译出来的代码吧,反编译的时候对于嵌套的 try-catch 没识别出来
try{
String s = Charset.defaultCharset().name();
return decode(s, abyte0, i, j); //第一个 return
} catch(UnsupportedEncodingException unsupportedencodingexception) {
warnUnsupportedCharset(s);
try{
return decode("ISO-8859-1", abyte0, i, j); //第二个 return
}catch(UnsupportedEncodingException unsupportedencodingexception){
MessageUtils.err((new StringBuilder()).append("ISO-8859-1 charset not available: ").append(unsupportedencodingexception.toString()).toString());
System.exit(1);
return null;
}
}
springzero
2016-01-11 13:11:58 +08:00
@Cloudee
@Zzzzzzzzz
@1023400273
好吧 原来这才是真相 我错了 还好没有崩掉三观。。
springzero
2016-01-11 13:14:08 +08:00
谢谢大家了~
moe3000
2016-01-11 13:15:14 +08:00
差点以为自己根本不会 java 。。
dphdjy
2016-01-11 14:58:39 +08:00
看反编译的代码~~

建议自己写一个试试~记住差异~

要不然。。。混淆之前不可读~之后简直乱码~
zacard
2016-01-11 15:06:34 +08:00
java 自带的类,你直接看 java 文件啊。。。还需要反编译吗?
driventokill
2016-01-11 15:59:38 +08:00
springzero
2016-01-11 18:37:06 +08:00
@zacard 知道。。。 我在熟悉 String 类。。我忽略了反编译这件事实。。平常习惯的后果,其实源码也在。。
springzero
2016-01-11 18:40:53 +08:00
@driventokill 非常非常感谢您分享这个地址给我 其实我在修炼 Java 工程师成神之路,将相关的学习经历传到我自己的 github 上, 谢谢
binjoo
2016-01-11 18:44:46 +08:00
看着脑袋痛。
SoloCompany
2016-01-11 22:46:19 +08:00
你下载 JDK 居然能忘记下载 src. zip
springzero
2016-01-11 23:20:17 +08:00
@SoloCompany 怎么可能。。。我看的就是里面源码 String 关联到其他类就直接左键单击过去。。。然后就是反编译了。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX