小编dcs*_*raw的帖子

比较两个对象并检查null

JDK中是否有一个方法可以比较两个对象的相等性,从而计算空值?像这样的东西:

public static boolean equals(Object o1, Object o2)
{
    if (o1 == null)
    {
        return o2 == null; // Two nulls are considered equal
    }
    else if (o2 == null)
    {
        return false;
    }

    return o1.equals(o2);
}
Run Code Online (Sandbox Code Playgroud)

自己编写这个方法似乎很愚蠢,因为我认为它必须已经存在于某个地方.

java comparison null equals

43
推荐指数
4
解决办法
3万
查看次数

在不重新评估序列的情况下获取IObservable中的上一个元素

在一个IObservable序列中(在.NET的Reactive Extensions中),我想获取previous和current元素的值,以便我可以比较它们.我在网上发现了一个类似于下面的例子来完成任务:

sequence.Zip(sequence.Skip(1), (prev, cur) => new { Previous = prev, Current = cur })
Run Code Online (Sandbox Code Playgroud)

它工作正常,除了它评估序列两次,我想避免.您可以看到使用此代码对其进行了两次评估:

var debugSequence = sequence.Do(item => Debug.WriteLine("Retrieved an element from sequence"));
debugSequence.Zip(debugSequence.Skip(1), (prev, cur) => new { Previous = prev, Current = cur }).Subscribe();
Run Code Online (Sandbox Code Playgroud)

输出显示的调试行数是序列中元素的两倍.

我理解为什么会发生这种情况,但到目前为止,我还没有找到一种不会对序列进行两次评估的替代方法.如何只将一个序列评估与前一个和当前一起组合?

c# system.reactive

13
推荐指数
2
解决办法
2464
查看次数

用于国际化的Java和GNU gettext

有没有人有过使用GNU gettext进行国际化开发大型Java应用程序的经验?我发现我真的很喜欢在我的源代码中使用英文文本,但我想确保我正在做的事情对于我所参与的相对较大的软件项目是切实可行的.

如果您有这方面的经验,您使用什么来查找Java中的资源?我目前正在尝试Gettext Commons(http://code.google.com/p/gettext-commons/),到目前为止似乎运行良好.

gettext的任何替代方法都可以将原始文本保留在源代码中?Windows上支持的类似工具会很棒.

java gettext internationalization

10
推荐指数
1
解决办法
6061
查看次数

在TypeScript中使用import/require来获取接口声明

如果我使用/// <reference path="..."/>语法引用TypeScript声明文件(例如jquery.d.ts),我应该确保通过其他方式加载相应的库,即只引用.d.ts文件不加载图书馆.

require()当我使用它时,有没有办法让TypeScript生成对库的调用?如果我没有使用AMD/requirejs,我可以require手动调用,但我想让它与AMD合作.

这样做的好处是我的依赖关系不会在两个地方定义.从.ts文件引用库就足以确保它加载,而不必在我的HTML中手动维护依赖项列表.

更新:我开了一个新问题,澄清了我的确切情况.因为我没有提供所有必要的细节,所以我想对我原来问题的答案给予赞扬.

javascript js-amd typescript

8
推荐指数
1
解决办法
7604
查看次数

GridBagLayout中最轻的间隔组件

在GridBagLayout中,哪个组件最适合在面板中提供空白区域?理想情况下,我想使用具有以下内容的组件:

  1. 低开销
  2. 没有空的空间时没有副作用(即没有最小尺寸)
  3. 一个简单的构造函数(没有参数)

JPanel违反了上述#2.Box需要一个构造函数参数(上面的#3),在这个简单的例子中,这实际上是不必要的.JLabel运行良好,但我担心它可能会有一些开销,但不可否认它可能很低.

匿名类似乎也运行良好(即"new JComponent(){}"),但每次使用它时都会添加一个额外的.class文件.我认为它不会比任何给定的事件处理程序更多开销.是否值得为此创建一个从JComponent派生的自定义零实现组件?是否存在我遗漏的现有组件?

FYI GridBagLayout是我所参与的团队的约束之一,因此其他布局不是一个选项.

java layout user-interface swing

7
推荐指数
1
解决办法
1万
查看次数

基于AST的Eclipse搜索

是否有Eclipse插件可以让您根据项目文件的Java AST(抽象语法树)进行搜索?"Java搜索"功能似乎不包括以下情况:

"让我在所有类中声明为'X'类型的所有字段"

我可以想象使用基于AST的搜索可以开辟更多的可能性,但我甚至不知道这样的插件是否具有实际性能.

更新:正如下面Kevin所指出的,Java搜索功能确实涵盖了我提到的用例.我仍然很好奇是否有人编写了一个允许任意类型的AST搜索的插件,例如."获取所有字符串连接"(带有+运算符和StringLiteral操作数的InfixExpression)

java eclipse search eclipse-plugin abstract-syntax-tree

6
推荐指数
1
解决办法
707
查看次数

没有导出的TypeScript声明的异步加载

我有许多jQuery插件,我想在TypeScript中使用AMD模式加载.例如,我可能有这样的结构:

/lib/jquery.myplugin.js
/app.ts
Run Code Online (Sandbox Code Playgroud)

该插件只是扩展了jQuery.它不提供新的顶级函数或变量.一个例子可能是:

// jquery.myplugin.js
jQuery.fn.myExample = function() { ... }
Run Code Online (Sandbox Code Playgroud)

相应的jquery.myplugin.d.ts文件如下所示:

interface JQuery {
    myExample();
}
Run Code Online (Sandbox Code Playgroud)

所以现在在app.ts我可以调用类似的东西$('#my-element').myExample().请注意,这假设我已经加载了Microsoft的jquery.d.ts声明.

我的问题是如何异步加载此库并利用TypeScripts静态类型?我可以像这样使用它:

/// <reference path="lib/jquery.myplugin.d.ts"/>
Run Code Online (Sandbox Code Playgroud)

但这需要我在<script>HTML中添加标签,并且不会异步加载库.我希望TypeScript生成此代码:

define(["require", "exports", "lib/jquery.myplugin"], function (require, exports, __jquery.myplugin__) {
    ...
    // Use my plugin
    $('#my-element').myExample();
}
Run Code Online (Sandbox Code Playgroud)

但是由于.d.ts文件中没有导出,我无法编写import myplugin = module('lib/jquery.myplugin').

我最接近的是jquery.myplugin.d.ts使用接口声明引用另一个ts文件并包含至少一个导出.但是在这个库中没有什么可以导出的,为了获得所需的输出,我不仅需要添加导出,而且还必须调用它.

更新:我在typescript.codeplex.com上为此打开了一个工作项

javascript js-amd typescript

6
推荐指数
1
解决办法
1719
查看次数

如何从源代码构建TypeScript编译器(tsc.js)?

如何从源代码构建TypeScript编译器(位于typescript.codeplex.com)?当我从git克隆它时,我看到一个Makefile,但是在cygwin中make失败,*** missing separator (did you mean TAB instead of 8 spaces?)

我找不到任何清晰的文档,并且源中的自述文件也无济于事。

typescript tsc

5
推荐指数
1
解决办法
1665
查看次数

如何在VSPackage中设置值后刷新Visual Studio设置

在Visual Studio扩展中,我已经定义了一个VSPackage,其中包含许多命令.在其中一个命令的处理程序中,我使用以下代码设置用户设置:

SettingsManager settingsManager = new ShellSettingsManager(this);
WritableSettingsStore userSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);

userSettingsStore.SetBoolean("Text Editor", "Visible Whitespace", true);
Run Code Online (Sandbox Code Playgroud)

这成功地在注册表中设置的值(HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0Exp\Text Editor在隔离外壳的情况下),但编辑器不会自动获得通知的变化,即白色的空间仍然隐藏.编辑>高级>显示空白区域的菜单选项仍然会关闭.重新启动Visual Studio会获取更改.

如何告诉Visual Studio刷新其用户设置的状态,以便其他所有人都收到有关更改的通知?

vspackage visual-studio-2012

4
推荐指数
1
解决办法
1032
查看次数

多个Swing事件派发线程

我想在Swing中创建一个新的事件派发线程,但我无法在线找到任何关于如何执行此操作的引用.我通过创建一个新线程并调用Application.run(...)在.NET中完成了这个.有没有人这样做过?在Swing中有可能吗?

仅供参考我之所以这样做,是因为我正在编写一个Eclipse插件,我想弹出一些不是IDE模态的对话框,但它们是我的UI逻辑的模态(阻塞).我可以使用非模态对话框和回调来实现这一点,但这需要使我的代码多线程的开销.如果前者不可能,我会再回到那里.

java swing multithreading modal-dialog ui-thread

3
推荐指数
2
解决办法
2479
查看次数