如何在java中推荐参数?

时间:2017-04-21 02:22:31

标签: java parameters annotations

使用该方法时,有没有办法推荐参数? (就像注释一样?)

我为url连接创建了很多静态final String参数,我想知道在编码时是否使用了正确的输入参数。

以下是我的例子。

public void myRequest(String inputParameter) {
    String requestURL = "";

    static final String ex1 = "http://example.com/xml1";
    static final String ex2 = "http://example.com/xml2";
    static final String ex3 = "http://example.com/xml3";
    static final String ex4 = "http://example.com/xml4";
    static final String ex5 = "http://example.com/xml5";
    static final String ex6 = "http://example.com/xml6";
    static final String ex7 = "http://example.com/xml7";
    // too many..
    // ....
    static final String ex125 = "http://example.com/xm125";

    if(inputParameter.equals("ex1")) {
        requestURL = ex1;
    } else if(inputParameter.equals("ex2")) {
        requestURL = ex2;
    }
    // just like this..
    // .....
      else if(inputParameter.equals("ex125")) {
        requestURL = ex125;
    }
    String requestURL = inputParameter;

    URL url = new URL(requestURL);
    URLConnection urlConnection = url.openConnection();
    // below codes are unnecessary.
}

我将在“main”方法中使用该方法

public static void main(String[] args) {
    myRequest("ex1"); // this!!
}

关键是,当我编写方法“myRequest()”时,IDE会告诉我有关参数的信息(当光标位于'('和')'之间时)。我可以注意到的唯一一个是“你应该写String对象”。不是“您可以使用ex1表示加载ex1.xml,ex2表示ex2.xml或... ex125表示xm125.xml”

如果我的希望成真,结果就像这样。

(编写方法)

myRequest(|); // there is cursor between ( and )

“我应该要求什么xml?嗯.. ex125有ex1。好的.. ex1意味着......我的家乡历史.. ex2意味着我的学校历史..而且嗯..我应该用ex4确定!” (我写下面的方法)

myRequest("ex4");

我希望IDE通知我应该使用什么字符串参数。

有可能吗?

2 个答案:

答案 0 :(得分:1)

鉴于您对问题的更新,答案是围绕enumsmaps构建的。

换句话说:你只是,永远不要像你那样放下常量列表;然后"映射" (通过代码中的硬连线;与您的示例中一样)到其他一些传入的字符串。

相反:您可以使用枚举来保存这些常量;您还可以向该枚举类添加一些方法,该方法知道如何将传入的字符串映射到可用的枚举常量。

但重点是:你想放弃" raw"字符串。 IDE(分别是编译器)无法帮助您添加" ext1" string作为方法参数。

但是当你有:

public enum ExUrls {
 EX1("http://example.com/xml1"), EX2("...
 ... a private constructor that takes that url string)

然后你做:

void someMethod(ExURls ex) {

突然之间,IDE将能够向您推荐所有潜在的ExUrl常量!

答案 1 :(得分:0)

我不确定我的问题是否正确,但您可以使用javadoc。

这是oracle的一个例子。

     /**
     * This method is very amazing it will cure cancer
     * (ex1 - hometown history),
     * (ex2 - school history),
     * (ex3 - blah blah),
     * (ex4 - what is the meaning of life),
     * ...
     * (ex125 - choose this)
     * 
     * @param inputParameter - (String) You can input ex1 up to ex125
     */
    public void myRequest(String inputParameter) {

您需要做的就是键入/ **并按功能顶部的Enter键,然后您可以添加详细信息。当您将鼠标悬停在其函数调用上时,它们会显示出来。

在你的情况下可能是这样的

let oauth_consumer_key = "******"
    let oauth_consumer_secret = "*****"
    let oauth_token = "*****"
    let oauth_token_secret = "*****"

    let url = URL(string: "http.myurl.com")
    let request = NSMutableURLRequest(url: url! as URL)

    let a = OAuthSwiftClient(consumerKey: oauth_consumer_key, consumerSecret: oauth_consumer_secret, oauthToken: oauth_token, oauthTokenSecret: oauth_token_secret, version: .oauth1)

    let credential = a.credential
    let parameters = [String: AnyObject]()
    let authorization = credential.authorizationHeader(method: .GET, url: url! as URL, parameters: parameters)

但如果你想要将输入限制在ex1-ex125,你只需要其他东西。