我最近完成了为我正在处理的项目添加某个功能的任务.由于此功能依赖于残酷使用的旧代码,因此我决定分两步执行任务:
我创建了一个分支feat/foo,在重构完成后,我将它合并到我们的master中,以便我们可以直接使用这些更改.现在我留下了以下提交历史记录:
A ---> B ---> C --> E ---> F <master B: created branch feat/foo
| ^ D: refactoring finished
D -----------| C: changes in master in between
^ E: merge commit
feat/foo F: master is now here
Run Code Online (Sandbox Code Playgroud)
feat/foo仍然指向D,我的主人提升到了提交F.我现在要做什么来继续我在分支专长/ foo中完成这项任务的工作?我看到两种可能性:
checkout -b又要删除它,所以我有一个与我的旧分支同名的新分支,第一个解决方案对我来说感觉不太对,删除分支只是为了再次创建它似乎是"错误的".但我不知道如何重复使用它.
我该怎么办?删除并重新创建分支,或者如果正确的答案将重用它,如何?
我经常使用Eclipse Debgugging函数Drop To Frame,但有时它在调试时不可用.我在SO和Eclipse Help条目中找到了另一个问题,其中说:
请注意,此命令仅在当前VM支持逐帧且所选堆栈帧不是顶部帧或本机方法中的帧时可用.
我的问题是,在调试相同的函数时(它不是顶层堆栈框架,并且它或它的父版本都不是本机方法 - 尽管有一个高3级)我有时会发现Drop to Frame已启用,我有时会发现它被禁用.
你知道Drop To Frame的更多限制,这可能是它不可用的原因吗?注意:我一直使用相同的JVM,我无法想象它有时会支持Drop To Frame,有时则不支持.
我有一张地图,我想要计算一些东西.在java 8之前,我不得不在地图中为每个键放置一个零,然后才能这样map.put(key, map.get(key)+1).
从Java 8开始,我现在可以使用Map的合并方法,如下例所示:
public class CountingMap {
private static final Map<Integer, Integer> map = new HashMap<> ();
public static Integer add (final Integer i1,
final Integer i2) {
return i1 + i2;
}
public static void main (final String[] args) {
map.merge (0, 1, CountingMap::add);
System.out.println (map); //prints {0=1}
map.merge (0, 1, CountingMap::add);
System.out.println (map); //prints {0=2}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以将对Integer的+运算符的引用作为BiFunction传递而不必声明我自己的add函数吗?
我已经尝试过类似的事情Integer::+,Integer::operator+但没有这些作品.
编辑:正如Tunaki指出的那样,我可以使用它Integer::sum.不过,我想知道是否有可能直接通过运营商作为参考.