小编cvu*_*vue的帖子

我如何在接口中重载方法?

如果我有这个界面

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)

java oop interface

8
推荐指数
2
解决办法
2万
查看次数

如何将参数传递给静态初始化块

我想要做的是将文件(使用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)

java oop file-io singleton utility-method

5
推荐指数
2
解决办法
8247
查看次数

标签 统计

java ×2

oop ×2

file-io ×1

interface ×1

singleton ×1

utility-method ×1