有一个Java Void- 大写的V-- 引用类型.我见过它唯一的情况是参数化Callables
final Callable<Void> callable = new Callable<Void>() {
public Void call() {
foobar();
return null;
}
};
Run Code Online (Sandbox Code Playgroud)
Java Void引用类型还有其他用途吗?可以分配除了以外的任何东西null吗?如果是的话,你有例子吗?
有谁知道为什么 java.lang.Number不实施Comparable?这意味着你无法排序Numbers的Collections.sort这对我来说有点陌生.
发布讨论更新:
java.lang.Number未实现Comparable的原因的最简单解释源于可变性问题.
对于位的检讨,java.lang.Number是抽象的超类型的AtomicInteger,AtomicLong,BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和Short.在那个列表上,AtomicInteger并AtomicLong没有实现Comparable.
四处搜索,我发现Comparable在可变类型上实现这不是一个好习惯,因为对象在比较期间或之后可能会发生变化,因此比较结果无用.这两个AtomicLong和AtomicInteger是可变的.API设计者已经预见到没有Number实现,Comparable因为它会限制未来子类型的实现.确实,AtomicLong并且AtomicInteger在java.lang.Number最初实现之后很久就被添加到Java 1.5中.
除了可变性之外,这里也可能有其他考虑因素.一compareTo实施Number就必须促进所有的数字值BigDecimal,因为它是能够容纳所有的Number子类型.这种促销在数学和表现方面的含义对我来说有点不清楚,但我的直觉发现了解决方案.
在Java中,您可以使用final关键字限定局部变量和方法参数.
public static void foo(final int x) {
final String qwerty = "bar";
}
Run Code Online (Sandbox Code Playgroud)
这样做会导致无法在方法体中重新分配x和qwerty.
这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?
我开始学习Clojure编程语言.在Mac OS X上是否有针对Clojure编辑器/ IDE的建议?
更新2009-09-23:自从我最初发布此问题以来,Clojure空间发生了巨大变化.下面的许多链接,特别是那些与Emacs引用clojure模式的链接都是过时的.我发现的最好的Clojure IDE 是最近发布的Enclojure Netbeans插件(2009-08-25).
更新2010-04-30:关于这个主题的另一篇非常好的文章是Clojure IDEs - Lau B. Jensen 的Grand Tour.另外,对于我自己的clojure开发,我实际上已经转移到了Emacs/swank-clojure.
在样式,约定,效率等方面,在Clojure中定义常量的最佳实践是什么?
例如,这是对的吗?
(def *PI* 3.14)
问题:
常量应该在Clojure中大写吗?
在风格上,他们是否应该在一侧或两侧都有星号(*)?
我应该注意的任何计算效率考虑因素?
以递归方式将所有者和组设置为目录中的文件的"python方式"是什么?我可以将'chown -R'命令传递给shell,但我觉得我错过了一些明显的东西.
我对此很不满意:
import os
path = "/tmp/foo"
for root, dirs, files in os.walk(path):
for momo in dirs:
os.chown(momo, 502, 20)
Run Code Online (Sandbox Code Playgroud)
这似乎适用于设置目录,但在应用于文件时失败.我怀疑文件没有得到整个路径,因此chown失败,因为它无法找到文件.错误是:
'OSError:[Errno 2]没有这样的文件或目录:'foo.html'
我在这里俯瞰什么?
我希望能够在org-mode中打开和关闭"完成"条目的显示.
替代方案 - 是否可以仅打开未完成的条目
我正在考虑将Maven用于我管理的Java开源项目.
然而,在过去,Maven并不总是拥有最好的声誉.你现在对Maven有什么印象?
我是Clojure interoping的Java API要求我传递一个2d的双精度数组; 双[][].如何在Clojure中创建一个原始的二维双数组?我正在寻找这样的东西
(double-array-2d [[1 2] [3 4]])
此函数的Java返回类型为double [] [].
获取当前节点的父节点名称的正确语法是什么?我知道这是关于AxisName的父级,但是什么是正确的语法?例如以下xml
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="file:/dev/null" iosp="lasp.tss.iosp.ValueGeneratorIOSP" start="0" increment="1">
<attribute name="title" value="Vector time series"/>
<dimension name="time" length="100"/>
<variable name="time" shape="time" type="double">
<attribute name="units" type="String" value="seconds since 1970-01-01T00:00"/>
</variable>
<group name="Vector" tsdsType="Structure" shape="time">
<variable name="x" shape="time" type="double"/>
<variable name="y" shape="time" type="double"/>
<variable name="z" shape="time" type="double"/>
</group>
</netcdf>
Run Code Online (Sandbox Code Playgroud)
对于元素变量,我应该得到netcdf或group.提前致谢.