代码如下:
-------------------------------------------------------------------------------------------------------
   static 
    {
        _self = (class$oracle$apps$fnd$common$logging$AppsLogDiagTest == null ? (class$oracle$apps$fnd$common$logging$AppsLogDiagTest = class$("oracle.apps.fnd.common.logging.AppsLogDiagTest")) : class$oracle$apps$fnd$common$logging$AppsLogDiagTest).getName();
     }
------------------------------------------------------------------------------------------------------
我刚学java,看到有个类里面代码是这样写的,好奇怪,这种代码在php里面见过类似的代码。
谁能提供一下这种代码的相关资料,谢谢!

解决方案 »

  1.   

    你多虑了 代码我没看完 但是看了大半 这仅仅是变量名字又奇怪又长罢了 没什么问题  和正常的一样
    static是静态块 类最先加载的内容里面的有分号的写法是if else变形写法
      

  2.   

    static {} 表示静态代码块,在类加载的时候被执行 
    _self = (xxx ? yyy : zzz) 是三目运算,表示 如果xxx是true则_self=yyy,否则_self=zzz
    这里还有一个赋值是
    _self = (yyy=kkk),即先执行右边的yyy=kkk,然后再让_self=yyy
    所以整个式子就是
    _self = (xxx ? (yyy=kkk) : zzz),如果xxx是true,则执行_self=(yyy=kkk),否则执行_self=zzz
      

  3.   

    LZ以前学php的可能有2点难理解些:
    1是静态块:这个是用来给静态区的内容作初始化的(Java里放在静态区中的只有类的声明和类变量),它会在程序加载的时候运行一次(相当于php中写在<?php?>之间的内容)。相关内容在教科书上可以看到。
    2是$字符:Java的变量命名规则和C不同(php和C是一样的),除了字母、数字、下划线以外,Java的变量名中还可以使用$字符。所以上面的几个长串字符串是变量名(class$是一个函数名)。
      

  4.   

    楼主是被代码吓住了,有hold住哈
      

  5.   

    如果将class$oracle$apps$fnd$common$logging$AppsLogDiagTest 看成一个变量,其他的就好理解了。。