传递参数java8

时间:2017-07-18 12:03:44

标签: java arguments parameter-passing

我有一个方法doStuff(String arg1)。 我从对象someObject调用它,传递"常量名称"作为String参数。 我可以在doStuff方法中获取此变量的值吗?

public Class1 {
     someObject.doStuff("SOME_CONST");
}


public Class2 {
     public static final String SOME_CONST = "someString";

     public void doStuff(String arg1) {
          doMoreStuff(arg1); 
     }

     // expected: doMoreStuff("someString"), but actual:  
     doMoreStuff("SOME_CONST").
}

3 个答案:

答案 0 :(得分:1)

试试这个:someObject.doStuff("SOME_CONST");而不是{{1}}

答案 1 :(得分:1)

不完全确定你在问什么,但是你可以通过反思获得价值,就像这样。 (它将打印CONSTANT)

public static class Class1 {
    public static void main(String[] args) {
        new Class2().doStuff("SOME_CONST");
    }
}

public static class Class2 {
    public static final String SOME_CONST = "CONSTANT";

    public void doStuff(String const_name) {
        try {
            String const_value = (String) Class2.class.getDeclaredField(const_name).get(null);
            System.out.println(const_value);
        }catch(NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

答案 2 :(得分:0)

如果您想传递属性:SOME_CONST

public static final String SOME_CONST = "someString";

作为参数:doMoreStuff(...) 你需要写这个:doMoreStuff(SOME_CONST);

因为doMoreStuff("SOME_COST");将作为参数传递String "SOME_COST"而不是变量