相关疑难解决方法(0)

我可以将数组作为参数传递给Java中带有变量参数的方法吗?

我希望能够创建一个像这样的函数:

class A {
  private String extraVar;
  public String myFormat(String format, Object ... args){
    return String.format(format, extraVar, args);
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是在方法中args处理,因此是单个参数,而我希望每个in 都作为新参数传递.既然也是一个带有变量参数的方法,这应该是可能的.Object[]myFormatString.formatObjectargsString.format

如果这是不可能的,有没有像这样的方法String.format(String format, Object[] args)?在这种情况下,我可以在前面加上extraVarargs使用新的数组,并把它传递给该方法.

java arrays backwards-compatibility variadic-functions

256
推荐指数
5
解决办法
20万
查看次数

在运行时使用反射来实例化未知类的对象的正确方法是什么?

我正在使用Configuration Loader类,以便我可以通过外部文本文件(config.txt)更改程序的参数,而不必每次更改时都重新编译我的代码.

有人建议我使用Java的Reflection来做这件事,但是我对如何实现它有点困惑.

我已经能够从我的文本文件中成功提取其构造函数的类名和参数,但是如何从此实例化到实例化对象?

到目前为止,这是我的方法:

public void loadObject(String classString, HashMap hm)
  {
  String className = props.getProperty(classString);
  Class c = Class.forName(className);
  }
Run Code Online (Sandbox Code Playgroud)

classString是一个包含类名称的字符串,hm是一个hashmap,其中类的构造函数参数映射到它们的预期值.

也就是说,class Foo (int xPos, float yPos)"xPos"将映射到预期int的字符串,"yPos"映射到预期float的字符串.我希望能够返回,new Foo(hm.get"xPos".toInt, hm.get"yPost".toFloat)但我不确定如何动态使用这样的构造函数(问题是,有多个可能的类 - 例如,它可能是一个bar而不是一个foo).

我知道可以基于classString做一个if/else,并且在识别它之后简单地调用正确的构造函数,但我希望创建一个更加可扩展的代码,每次添加时都不需要重写该课程的新课程.

所有可能的对象都从单个父对象继承.

java reflection

9
推荐指数
1
解决办法
7700
查看次数