如果我有这个界面
public interface someInterface {
// method 1
public String getValue(String arg1);
// method 2
public String getValue(String arg1, String arg2);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将1或2个字符串传递给getValue方法,而不必在每个实现类中都覆盖它们.
public class SomeClass1 impelments someInterface
{
@Override
public String getValue(String arg1);
}
public class SomeClass2 implements someInterface
{
@Override
public String getValue(String arg1, String arg2);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为SomeClass1需要实现方法2而SomeClass2需要实现方法1.
我坚持这样做吗?
public interface someInterface2 {
public String getValue(String... args);
}
public class SomeClass3 implements someInterface2
{
@Override
public String getValue(String... args) {
if (args.length != 1) {
throw IllegalArgumentException();
} …Run Code Online (Sandbox Code Playgroud) 我想要做的是将文件(使用Apache poi的excel文件)中的键/值对加载到将用作查找表的静态映射中.一旦加载,表格就不会改变.
public final class LookupTable
{
private final static Map<String, String> map;
static {
map = new HashMap<String, String>();
// should do initialization here
// InputStream is = new FileInputStream(new File("pathToFile"));
// not sure how to pass pathToFile without hardcoding it?
}
private LookupTable() {
}
public static void loadTable(InputStream is) {
// read table from file
// load it into map
map.put("regex", "value");
}
public static String getValue(String key) {
return map.get(key);
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在静态初始化块中加载映射,但是如何在不对其进行硬编码的情况下传递流?我在使用loadTable静态方法时看到的问题是在调用其他静态方法之前可能没有调用它.
// LookupTable.loadTable(stream);
LookupTable.getValue("regex"); …Run Code Online (Sandbox Code Playgroud)