亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? methodcallexpression.java

?? Groovy動態語言 運行在JVM中的動態語言 可以方便的處理業務邏輯變化大的業務
?? JAVA
字號:
/*
 $Id: MethodCallExpression.java 4287 2006-12-01 13:00:13Z blackdrag $

 Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.

 Redistribution and use of this software and associated documentation
 ("Software"), with or without modification, are permitted provided
 that the following conditions are met:

 1. Redistributions of source code must retain copyright
    statements and notices.  Redistributions must also contain a
    copy of this document.

 2. Redistributions in binary form must reproduce the
    above copyright notice, this list of conditions and the
    following disclaimer in the documentation and/or other
    materials provided with the distribution.

 3. The name "groovy" must not be used to endorse or promote
    products derived from this Software without prior written
    permission of The Codehaus.  For written permission,
    please contact info@codehaus.org.

 4. Products derived from this Software may not be called "groovy"
    nor may "groovy" appear in their names without prior written
    permission of The Codehaus. "groovy" is a registered
    trademark of The Codehaus.

 5. Due credit should be given to The Codehaus -
    http://groovy.codehaus.org/

 THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
 ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
 NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 OF THE POSSIBILITY OF SUCH DAMAGE.

 */
package org.codehaus.groovy.ast.expr;

import groovy.lang.MetaMethod;

import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.GroovyCodeVisitor;

/**
 * A method call on an object or class
 * 
 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
 * @version $Revision: 4287 $
 */
public class MethodCallExpression extends Expression {

    private Expression objectExpression;
    private Expression method;
    private Expression arguments;
    private boolean spreadSafe = false;
    private boolean safe = false;
    private boolean implicitThis;
    
    public static Expression NO_ARGUMENTS = new TupleExpression();

    public MetaMethod getMetaMethod() {
        return metaMethod;
    }

    private MetaMethod metaMethod = null;

    public MethodCallExpression(Expression objectExpression, String method, Expression arguments) {
        this(objectExpression,new ConstantExpression(method),arguments);
    }
    
    public MethodCallExpression(Expression objectExpression, Expression method, Expression arguments) {
        this.objectExpression = objectExpression;
        this.method = method;
        this.arguments = arguments;
        //TODO: set correct type here
        // if setting type and a methodcall is the last expresssion in a method,
        // then the method will return null if the method itself is not void too!
        // (in bytecode after call: aconst_null, areturn)
        this.setType(ClassHelper.DYNAMIC_TYPE);
        this.setImplicitThis(true);
    }

    public void visit(GroovyCodeVisitor visitor) {
        visitor.visitMethodCallExpression(this);
    }

    public Expression transformExpression(ExpressionTransformer transformer) {
        MethodCallExpression answer =
            new MethodCallExpression(transformer.transform(objectExpression), transformer.transform(method), transformer.transform(arguments));
        answer.setSafe(safe);
        answer.setSourcePosition(this);
        return answer;
    }

    public Expression getArguments() {
        return arguments;
    }

    public Expression getMethod() {
        return method;
    }
    
    /**
     * This method returns the method name as String if it is no dynamic
     * calculated method name, but an constant.
     */
    public String getMethodAsString() {
        if (! (method instanceof ConstantExpression)) return null;
        ConstantExpression constant = (ConstantExpression) method;
        return constant.getText();
    }

    public Expression getObjectExpression() {
        return objectExpression;
    }

    public String getText() {
        return objectExpression.getText() + "." + method.getText() + arguments.getText();
    }

    /**
     * @return is this a safe method call, i.e. if true then if the source object is null
     * then this method call will return null rather than throwing a null pointer exception
     */
    public boolean isSafe() {
        return safe;
    }

    public void setSafe(boolean safe) {
        this.safe = safe;
    }

    public boolean isSpreadSafe() {
        return spreadSafe;
    }

    public void setSpreadSafe(boolean value) {
        spreadSafe = value;
    }

    /**
     * @return true if no object expression was specified otherwise if 
     * some expression was specified for the object on which to evaluate
     * the method then return false
     */
    public boolean isImplicitThis() {
        return implicitThis;
    }

    public void setImplicitThis(boolean implicitThis) {
        this.implicitThis = implicitThis;
    }

    public String toString() {
        return super.toString()
            + "[object: "
            + objectExpression
            + " method: "
            + method
            + " arguments: "
            + arguments
            + "]";
    }

    public void setMethod(MetaMethod mmeth) {
        this.metaMethod = mmeth;
        super.setType(ClassHelper.make(mmeth.getReturnType()));
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男男青年gay1069videost| 久久99精品国产.久久久久久| 久久夜色精品一区| 日韩一区二区三区三四区视频在线观看 | 久久久久久久久久久久电影| 欧美日韩久久久久久| 欧美男女性生活在线直播观看| 欧美伊人久久久久久久久影院| 91黄色在线观看| 欧美视频一区二区三区| 欧美日韩国产另类不卡| 欧美电影一区二区三区| 日韩欧美一区二区在线视频| 欧美成人福利视频| 国产日韩影视精品| 亚洲品质自拍视频网站| 亚洲国产精品视频| 蜜臀精品久久久久久蜜臀| 国产在线精品一区二区| 成人av免费在线观看| 一本大道久久a久久精品综合| 91黄视频在线| 欧美精品一区二区久久婷婷| 中文字幕欧美激情| 亚洲成人在线免费| 国产真实乱子伦精品视频| www.欧美日韩国产在线| 欧美三级韩国三级日本一级| www久久久久| 亚洲精品国产成人久久av盗摄| 性做久久久久久| 高清不卡一二三区| 欧美日韩免费一区二区三区| 久久综合精品国产一区二区三区| 亚洲欧美综合色| 美女视频一区在线观看| 99视频一区二区三区| 51午夜精品国产| 亚洲欧洲精品一区二区三区| 日韩精品电影在线| 成人美女视频在线观看| 欧美日韩高清不卡| 国产精品乱码久久久久久| 丝袜美腿亚洲综合| 91在线小视频| 久久久久久久av麻豆果冻| 亚洲成人午夜影院| av一二三不卡影片| 久久久激情视频| 日韩国产欧美在线观看| 成人教育av在线| 精品动漫一区二区三区在线观看| 一区二区在线观看不卡| 成人看片黄a免费看在线| 日韩欧美在线影院| 亚洲va国产天堂va久久en| 丁香一区二区三区| 久久综合久久久久88| 亚洲福利一二三区| 91传媒视频在线播放| 国产精品美女一区二区在线观看| 老鸭窝一区二区久久精品| 欧美视频在线不卡| 夜夜嗨av一区二区三区网页| 91在线国产观看| 中文字幕免费在线观看视频一区| 激情文学综合丁香| 精品国产百合女同互慰| 麻豆一区二区三区| 欧美成人video| 久久99久久99小草精品免视看| 7777精品伊人久久久大香线蕉完整版| 亚洲欧洲日产国码二区| av高清不卡在线| 国产精品福利电影一区二区三区四区| 国产精品一色哟哟哟| 国产午夜精品理论片a级大结局| 国模冰冰炮一区二区| 精品国产一区二区三区久久久蜜月 | 国产成人免费av在线| 精品卡一卡二卡三卡四在线| 美腿丝袜亚洲综合| 欧美成人三级电影在线| 国产一区二区不卡| 国产无一区二区| a4yy欧美一区二区三区| 亚洲欧美激情一区二区| 欧美性色aⅴ视频一区日韩精品| 亚洲自拍与偷拍| 欧美精品九九99久久| 久久爱www久久做| 国产亚洲精品久| 99精品视频在线播放观看| 一区二区三区四区不卡在线 | 欧美日韩高清影院| 久久99精品久久久久久| 国产精品黄色在线观看| 色综合色狠狠综合色| 亚洲成人av一区二区三区| 欧美一区二区三区男人的天堂| 久久99国产乱子伦精品免费| 欧美激情一区二区三区| 欧美中文字幕不卡| 六月丁香婷婷久久| 国产精品乱码一区二三区小蝌蚪| 91豆麻精品91久久久久久| 麻豆精品国产传媒mv男同| 国产精品久久久久久久久久久免费看| 一本到不卡精品视频在线观看| 日韩国产在线观看| 1区2区3区欧美| 欧美一级国产精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 久久国产精品一区二区| 国产精品电影院| 日韩一区二区免费高清| 91亚洲精品一区二区乱码| 日本sm残虐另类| 亚洲欧美日韩精品久久久久| 久久综合色天天久久综合图片| 日本韩国欧美一区二区三区| 狠狠色综合日日| 午夜影院在线观看欧美| 中文字幕免费不卡在线| 日韩视频在线观看一区二区| 日本国产一区二区| 成人的网站免费观看| 精品一区二区三区在线播放视频 | 亚洲欧洲av在线| 精品欧美一区二区久久| 欧美日韩一区精品| 成人国产电影网| 国产一区二区调教| 日本欧美一区二区| 午夜精品福利视频网站| 亚洲天堂av老司机| 国产精品区一区二区三| 26uuu另类欧美亚洲曰本| 欧美一二三四区在线| 欧美日韩激情一区| 欧美在线一区二区三区| 色综合久久综合网欧美综合网| 国产成人午夜片在线观看高清观看| 免费看日韩a级影片| 天天操天天色综合| 天堂精品中文字幕在线| 亚洲国产成人高清精品| 亚洲专区一二三| 亚洲精品成人a在线观看| 椎名由奈av一区二区三区| 国产精品水嫩水嫩| 欧美极品aⅴ影院| 国产女主播在线一区二区| 久久久久久久久蜜桃| 国产午夜精品福利| 中文一区一区三区高中清不卡| 国产午夜精品理论片a级大结局| 国产视频一区在线观看| 国产欧美日韩在线看| 国产精品美女久久久久久久久| 国产精品美女一区二区三区| 亚洲人成伊人成综合网小说| 亚洲人成伊人成综合网小说| 亚洲一区二区四区蜜桃| 天天影视网天天综合色在线播放| 日韩av一区二| 国产伦精品一区二区三区视频青涩 | 亚洲精品成人悠悠色影视| 一二三四社区欧美黄| 日韩在线观看一区二区| 韩国在线一区二区| 成人午夜免费av| 一本大道久久精品懂色aⅴ| 欧美日韩国产高清一区二区三区| 4438x亚洲最大成人网| 久久免费电影网| 亚洲欧美日韩国产综合在线| 婷婷成人综合网| 国产精品一区二区久久精品爱涩 | 欧美视频在线一区| 欧美电影免费观看完整版| 国产亚洲欧美一区在线观看| 18涩涩午夜精品.www| 婷婷丁香久久五月婷婷| 国产成人午夜精品影院观看视频| 91蜜桃传媒精品久久久一区二区| 91精品国产品国语在线不卡| 26uuu欧美日本| 亚洲福利视频一区二区| 国产一区二区精品久久99| 色综合久久88色综合天天6| 日韩视频永久免费| 亚洲色欲色欲www| 精品在线免费观看| 色猫猫国产区一区二在线视频| 欧美一区二区视频观看视频| 自拍偷拍欧美激情| 国产精选一区二区三区| 欧美精选一区二区| 中文字幕欧美日韩一区|