我正在尝试使用Google的Guava ImmutableSet类来创建一组具有时间属性的不可变类(java.util.Date和org.joda.time.DateTime).
private static final ImmutableSet<Class<?>> timeLikeObjects = ImmutableSet.of(Date.class, DateTime.class);
Run Code Online (Sandbox Code Playgroud)
我完全不知道为什么我得到这个编译错误(eclipse中的Java 1.6).
Type mismatch: cannot convert from ImmutableSet<Class<? extends Object&Serializable&Comparable<? extends Comparable<?>>>> to ImmutableSet<Class<?>>
Run Code Online (Sandbox Code Playgroud)
请注意,这有效:
private static final ImmutableSet<?> timeLikeObjects = ImmutableSet.of(Date.class, DateTime.class);
Run Code Online (Sandbox Code Playgroud)
但是我显然忽略了timeLikeObjects类型的一般描述的一部分.
我从未在通用描述中遇到&符号,并且它似乎不是有效的语法.
有没有办法在Java Generics中指定我刚刚缺少的多继承?
我想使用ruby和mongoDB以原子方式从堆栈中推出和拉出东西.
我可以通过以下代码示例原子地执行推送:
collection.update({"_id" => document["_id"]}, {"$push" => {field_name => value}})
Run Code Online (Sandbox Code Playgroud)
pop的示例代码:
value = collection.update({"_id" => document["_id"]}, {"$pop" => {field_name => -1}})
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面返回的值不是从堆栈"弹出"的值.
它似乎是一个非常有用的功能/特性,我发现很难相信mongoDB是不可能的.
更新
为了那些寻找完整答案的人的利益,这里是(再次感谢Cameron):
result = collection.find_and_modify({:query => {"_id" => document["_id"]}, :update => {"$pop" => {field_name => -1}}})
return result[field_name][0]
Run Code Online (Sandbox Code Playgroud)