我们怎么知道,应用了一些方法?

时间:2017-01-19 09:27:14

标签: java methods collections

让我们考虑一下,我们创建一些集合让我们说Map:

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(10,20);

现在在示例中我们有“map”对象和方法“put”谁添加了一对我们的地图。 但是,折磨我的问题是我怎么知道,“put”方法正在工作,我将在没有代码执行的情况下进行新的记录,即没有运行测试。

2 个答案:

答案 0 :(得分:3)

如果您查看Map::put() API,您会看到:

  

<强>抛出:
  UnsupportedOperationException - 如果此地图不支持put操作   ClassCastException - 如果指定键或值的类阻止它存储在此映射中   NullPointerException - 如果指定的键或值为null并且此映射不允许空键或值
  IllegalArgumentException - 如果指定键或值的某些属性阻止它存储在此映射中

  

<强>返回
  与key关联的先前值,如果没有key的映射,则返回null。 (如果实现支持空值,则null返回也可以指示映射先前将null与key关联。)

因此,使用try-catch和返回值可以确保put操作成功。

但是,如果您想完全确定,可以覆盖Map实现(在本例中为HashMap)并创建业务逻辑。

在这种情况下,请使用put并返回boolean而不是投掷任何Exception(或以您希望的方式处理它们)。

public class MyHashMap<K, V> extends HashMap {
    @Override
    public Boolean put(Object key, Object value) {
        try {
            super.put(key, value);
        } catch (UnsupportedOperationException | ClassCastException | NullPointerException | IllegalArgumentException e) {
            return false; // or do what you want!
        }
        return true;
    }
}

以后使用它!

Map<Integer, Integer> myMap = new MyHashMap();

// printing result
System.out.println(myMap.put(10,20));   

// set result to a variable
boolean result = myMap.put(null,null);  // result = true

// or even setting and evaluating 
if (myMap.put(10,20)) {
   // success action
} else {
   // fail action
}

注意: 这是一个java 8实现

答案 1 :(得分:0)

在处理标准Java函数时,您可以阅读其API。例如map.put(K, V)。如果出现问题,将抛出异常 - 你必须抓住它并弄清楚出了什么问题。