我只熟悉简洁的javadoc生成器,但是我想在我的javadoc中包含一些数学方程式(而不是经常引用另一个文档).
是否有一个方便的选项来做一些像include /正确渲染LaTeX(最喜欢 - 然后我可以剪切n-paste)或MathML标签?
直到最近我才意识到Perl 5.10具有重要的新功能,我想知道是否有人可以给我一些很好的资源来学习这些.我在Google上搜索过它们,我找到的只是一些幻灯片和快速概述.如果他们有更多的解释,一些功能(至少对我来说)会很好.
任何链接将不胜感激.
-fREW
我一直在更新现有的库以抛出异常,以帮助改善使用该库的人员的调试.
起初,我认为我会定义特定于每个类的异常,但事实证明,大多数异常只是现有运行时异常(例如FooNegativeIntArgumentException extends IllegalArgumentException,FooNullBarException extends NullPointerException)与特定消息的扩展.
定义新例外与使用现有例外的权衡有何不同?有没有任何惯例/最佳做法?
此外,鉴于需要向后兼容性,这些异常中的大多数(如果不是全部)都是运行时异常.
我正在阅读将在Java 7中出现的闭包.
我有点困惑,因为一方面有很多很好的文章描述了新的java闭包.但另一方面,有3种不同的规格,有些文章只是过时了,因为描述的不是最新的提案.
因此,如果有人从一开始就跟踪java闭包的进度,那么请在很短的时间内描述所有3个提案及其当前状态.
关于闭包的另一件事是,是否只存在一个开发线或正在开发不同的版本(例如,来自Sun,来自Google,来自Apache等的闭包)?
我正在研究一种科学应用,它可以很容易地分开并且可以并行进行.所以,我已经将这些部分作为独立线程写入每个运行,但不是因为看起来是将事物分成线程的标准原因(即,没有阻止某些退出命令等).
几个问题:
这实际上是否在标准的多核桌面上买了任何东西 - 也就是说,如果我有一个当前的JVM,那么线程实际上是在单独的内核上运行,还是我必须做其他事情?
我有很少的对象被所有线程读取(尽管从未写过).那个潜在的问题?这些问题的解决方案?
对于实际的集群,您是否可以推荐框架将线程分发到各个节点,这样我就不必自己管理(如果存在的话)?澄清:通过这种方式,我的意思是要么自动将线程转换为单个节点的任务,要么使整个集群看起来像一个JVM(即,它可以将线程发送到它可以访问的任何处理器)或其他什么.基本上,在集群上以有用的方式实现并行化,因为我已经将它构建到算法中,而我的工作量最小.
奖励:大多数评估包括集合比较(例如,union,intersection,contains)以及来自键的一些映射以获得相关集合.我在FORTRAN,C和C++(第一个科学计算学期和10年前的另外两个HS AP课程的学期)方面经验有限 - 如果我绑了我的话,我会发现什么样的速度/易于并行化收益? Java前端到其中一种语言的算法后端,以及我的经验水平可能会在那些语言中实现这些操作会带来什么样的麻烦?
我有两个集合,以及根据是否满足某些条件而添加到这些集合中的一个或另一个集合的项目.
有点无意中,我偶然发现写作是合法的
(test(foo) ? cOne : cTheOther).add(foo);
Run Code Online (Sandbox Code Playgroud)
代替
if (test(foo)) {
cOne.add(foo);
} else {
cTheOther.add(foo);
}
Run Code Online (Sandbox Code Playgroud)
虽然第一个让我觉得聪明(总是加分),但我不确定长期可读性,可维护性等.我看到的基本优势是,如果我知道我总是会做同样的事情,它成为改变方法的一个位置(而不是两个,或者如果我通过条件运算符实现switch语句,可能很多).主要的缺点发生在不是这种情况时(即,我需要为某些情况而不是其他情况添加方法调用).
您看到两种方法(或其他解决方案)的优缺点是什么?
如果你不认为使用条件运算符设置哪个对象来调用方法的特定实例是正确的选择,是否存在合理的情况?
我编写的代码主要供个人使用,但我正在考虑发布一个我最初开发用于个人用途的应用程序(科学模拟/可视化).
我的一个习惯是在类中使用main方法来单独测试类的操作.我认为这在某种程度上可能是不好的(毫无疑问,其他各种习惯来自于自我教学和科学发展环境).但是,我注意到,对于自用的东西来说,这从来就不是问题.
您是否都非常友好地确认(或否认)主管的扩散是向科学界发布的应用程序的问题(来源也是开放的),如果是,为什么?
编辑:相对于一些提供的答案,扮演魔鬼的拥护者(好吧,我的拥护者):部分"应用程序使用"预计将由非开发人员(典型的科学家)进行小规模的源修改.我知道在接收端,对于直接构建到该类中的类进行测试对我来说非常简单,因此我可以相应地识别和修改(特别是如果这些类一直是这样的话).使用像JUnit这样的东西会提供类似的效用吗,请记住观众?
接受决定:我认为KLE的答案是彻底和简洁的最佳平衡,所以我选择了它,但我认为Bill的讨论评论也非常有帮助.我也不明白为什么约翰内斯的答案被否决了 - "这件作品如何运作"的观点对于科学界的编码员来说非常重要 - 而其他答案指出了为什么分离单元测试可能比我的更有用的各种原因目前的习惯,他们并没有真正解决这个问题,所以他的答案远非"无益".感谢所有当前(和未来)的响应者,并且希望有一种方法可以将多个响应组合成正确的答案!
作为该主题中一般问题的一个实际例子,我想containsAll在Set界面中实现该方法
public boolean containsAll(Iterable<?> c) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我想这应该是允许的,因为Collection是Iterable意味着这种containsAll将涵盖接口要求.同样,更普遍的是能够实现与参数超类的接口似乎应该工作.
然而,Eclipse说没办法(没有试过直接javac) - 有人可以解释原因吗?我确信规范中的某些内容使其成为现实,但我也想了解需求的动机.或者我错过了Iterable<?>不是超类的东西Collection<?>?
作为一个附带问题 - 鉴于我正在声明两个方法,带有Iterable签名的方法总是首选带有Collection参数的调用?
Eclipse错误:
如果我删除带Collection签名的方法,只留下Iterable一个(见错误后),我得到以下内容:
The type BitPowerSet must implement the inherited abstract method Set<Long>.containsAll(Collection<?>)
确切的实施是:
@Override public boolean containsAll(Collection<?> c) {
for (Object o : c) if (!contains(o)) return false;
return true;
}
public boolean containsAll(Iterable<?> c) {
for (Object o : c) …Run Code Online (Sandbox Code Playgroud) 我有一个接口A,该类B实现.
以下通用方法有效
public static <T, U extends T> List<T> listFactory(Collection<U> source) {
return new ArrayList<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
但
public static <T> List<T> listFactory(Collection<? extends T> source) {
return new ArrayList<T>(source);
}
Run Code Online (Sandbox Code Playgroud)
当我将输出定向到时,不会(编译错误,类型不匹配)
List<A> tester = listFactory(B.defaultCollectionFactory(3));
Run Code Online (Sandbox Code Playgroud)
defaultCollectionFactory(int count)静态地提供Bs 的集合,具有默认标签方案.
关于为什么会这样的任何见解?看起来普通的U和通配符正在做同样的事情.
我正在尝试在我的GWT项目中提供一些函数挂钩:
private TextBox hello = new TextBox();
private void helloMethod(String from) { hello.setText(from); }
private native void publish() /*-{
$wnd.setText = $entry(this.@com.example.my.Class::helloMethod(Ljava/lang/String;));
}-*/;
Run Code Online (Sandbox Code Playgroud)
publish()被召入onModuleLoad().但这不起作用,在开发控制台中没有提供反馈的原因.我也尝试过:
private native void publish() /*-{
$wnd.setText = function(from) {
alert(from);
this.@com.example.my.Class::helloMethod(Ljava/lang/String;)(from);
}
}-*/;
Run Code Online (Sandbox Code Playgroud)
这将java.lang.ClassCastException在FireBug控制台中抛出一个,虽然alert火灾很好.建议?