需要一些帮助才能理解第二行代码中的内容?

时间:2016-03-26 14:28:49

标签: java string ternary-operator

 public <T> void addToRequestQueue(Request<T> req, String tag) {
    req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
    getRequestQueue().add(req);
}

第二行做了什么?我无法理解这是什么(标签)?标签:标签。

这是完整的代码

{
import android.app.Application;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

public class AppController extends Application {

    public static final String TAG = AppController.class.getSimpleName();

    private RequestQueue mRequestQueue;

    private static AppController mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized AppController getInstance() {
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }
}

这里是完整的代码现在告诉我,请解释一下你是否可以在那个方法第二行做了什么

2 个答案:

答案 0 :(得分:0)

TAG必须是String类型的常量,表示tag的默认值,无论它是什么 - 如下所示:

public static final String TAG = "<default-tag>";

这里的想法是使用作为第二个参数传递的值标记您的请求,即String tagConditional operator ?:用于在不使用if / else语句的情况下实施检查。

如果在tag的调用中传递的addToRequestQueue字符串恰好为空,则该方法会使用TAG的值。

答案 1 :(得分:0)

第二行的翻译

public static final String TAG = AppController.class.getSimpleName();

public <T> void addToRequestQueue(Request<T> req, String tag) {
    req.setTag("is tag empty?" yes, so use `TAG` : no, so use `tag`);
    getRequestQueue().add(req);
} 

换句话说:

if(tag.isEmpty()){
  res.setTag(TAG)

} else {
  res.setTag(tag)

}