V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
springzero
V2EX  ›  Java

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

  •  
  •   springzero · 2016-01-11 12:26:54 +08:00 · 4527 次点击
    这是一个创建于 3238 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码是 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 ,都不是我要表达的意思,实在没办法,只能找社区碰碰运气。。。求大神指点

    22 条回复    2016-01-12 09:19:07 +08:00
    ifconfig
        1
    ifconfig  
       2016-01-11 12:34:08 +08:00
    这代码,看了也是醉了
    1023400273
        2
    1023400273  
       2016-01-11 12:35:24 +08:00   ❤️ 1
    反编译出来的吧
    Zzzzzzzzz
        3
    Zzzzzzzzz  
       2016-01-11 12:36:21 +08:00   ❤️ 1
    你看了一份把 try 和 catch 都给砍掉的代码了.
    xpol
        4
    xpol  
       2016-01-11 12:36:23 +08:00 via Android
    不是 markdown 可以缩进吗。这样没法看。
    datou552211
        5
    datou552211  
       2016-01-11 12:37:28 +08:00 via iPhone
    这是不是有问题,返回应该在条件语句后面
    hepin1989
        6
    hepin1989  
       2016-01-11 12:38:07 +08:00
    下面的是 deadcode 啊
    ybjaychou
        7
    ybjaychou  
       2016-01-11 12:39:42 +08:00 via Android
    放到 IDE 里面看看
    airqj
        8
    airqj  
       2016-01-11 12:42:58 +08:00
    这根本是在写英语作文啊
    Cloudee
        9
    Cloudee  
       2016-01-11 12:47:33 +08:00   ❤️ 1
    应该是反编译出来的代码吧,反编译的时候对于嵌套的 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
        10
    springzero  
    OP
       2016-01-11 13:11:58 +08:00
    @Cloudee
    @Zzzzzzzzz
    @1023400273
    好吧 原来这才是真相 我错了 还好没有崩掉三观。。
    springzero
        11
    springzero  
    OP
       2016-01-11 13:14:08 +08:00
    谢谢大家了~
    moe3000
        12
    moe3000  
       2016-01-11 13:15:14 +08:00
    差点以为自己根本不会 java 。。
    dphdjy
        13
    dphdjy  
       2016-01-11 14:58:39 +08:00 via Android
    看反编译的代码~~

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

    要不然。。。混淆之前不可读~之后简直乱码~
    zacard
        14
    zacard  
       2016-01-11 15:06:34 +08:00
    java 自带的类,你直接看 java 文件啊。。。还需要反编译吗?
    springzero
        16
    springzero  
    OP
       2016-01-11 18:37:06 +08:00
    @zacard 知道。。。 我在熟悉 String 类。。我忽略了反编译这件事实。。平常习惯的后果,其实源码也在。。
    springzero
        17
    springzero  
    OP
       2016-01-11 18:40:53 +08:00
    @driventokill 非常非常感谢您分享这个地址给我 其实我在修炼 Java 工程师成神之路,将相关的学习经历传到我自己的 github 上, 谢谢
    binjoo
        18
    binjoo  
       2016-01-11 18:44:46 +08:00
    看着脑袋痛。
    SoloCompany
        19
    SoloCompany  
       2016-01-11 22:46:19 +08:00 via Android
    你下载 JDK 居然能忘记下载 src. zip
    springzero
        20
    springzero  
    OP
       2016-01-11 23:20:17 +08:00
    @SoloCompany 怎么可能。。。我看的就是里面源码 String 关联到其他类就直接左键单击过去。。。然后就是反编译了。。
    sprinng
        21
    sprinng  
       2016-01-12 09:08:44 +08:00
    反编译没有 try catch
    DRcoding
        22
    DRcoding  
       2016-01-12 09:19:07 +08:00
    表听楼上乱讲,装完 jdk 后 src.zip 就在 jdk 根目录下面,这里的源码对应的是 rt.jar 包下的部分源码,在 eclipse 里 attach source 就行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:12 · PVG 18:12 · LAX 02:12 · JFK 05:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.