AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.ic_delete).setMessage("Exit?").setTitle("Confirm").show();
以上的语法中,可以连续用多个.setXXX方法,然后最后用.show().请问java中为什么能够用多个"."呢?语法上怎么解释?java语法

解决方案 »

  1.   

    我似乎有点明白了。
       这个代码等效于 AlertDialog dialog = (new AlertDialog.Builder(MainActivity.this)).setIcon(android.R.drawable.ic_delete).setMessage("Exit?").setTitle("Confirm").show();  "new AlertDialog.Builder(MainActivity.this)"返回了一个Builder类型的对象,setIcon也返回一个builder对象,依次类推。但是奇怪的是,“.”的优先级高于new运算符,也就是应该等价于AlertDialog dialog = new ( AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.ic_delete) ).setMessage("Exit?").setTitle("Confirm").show();但是这样修改又有一个语法错误。到底是怎么回事?
      

  2.   

    基本表达式 > 对象生成 > 数组生成 > 成员访问 > 数组成员访问 > 后缀 > 一元 > 类型转换 > 乘法 > 加法 > 位移 > 关系 > 等价 > 位运算 > 逻辑运算 > 条件 > 赋值于是.的优先级高是从哪听来的
      

  3.   


    我刚开始学习java,遇到这种语法不太明白。
      

  4.   


    我查了资料, [].()属于优先级第一序列,new属于第二序列,所有.的优先级比new要高。
    优先级资料如下
    http://flysnow.iteye.com/blog/703112