小编Hos*_*Aly的帖子

为什么autoboxing会在Java中使一些调用变得模棱两可?

我今天注意到自动装箱有时会导致方法重载分辨率的模糊.最简单的例子似乎是这样的:

public class Test {
    static void f(Object a, boolean b) {}
    static void f(Object a, Object b) {}

    static void m(int a, boolean b) { f(a,b); }
}
Run Code Online (Sandbox Code Playgroud)

编译时,会导致以下错误:

Test.java:5: reference to f is ambiguous, both method
    f(java.lang.Object,boolean) in Test and method
    f(java.lang.Object,java.lang.Object) in Test match

static void m(int a, boolean b) { f(a, b); }
                                  ^
Run Code Online (Sandbox Code Playgroud)

修复此错误很简单:只使用显式自动装箱:

static void m(int a, boolean b) { f((Object)a, b); }
Run Code Online (Sandbox Code Playgroud)

这正确地按预期正确调用第一个重载.

那么为什么重载决策失败了呢?为什么编译器没有自动包装第一个参数,并正常接受第二个参数?为什么我必须明确请求自动装箱?

java compiler-construction autoboxing overloading

34
推荐指数
2
解决办法
5869
查看次数

如何解决Java中的"双重检查锁定"声明?

我想在Java中实现多线程的延迟初始化.
我有一些类似的代码:

class Foo {
    private Helper helper = null;
    public Helper getHelper() {
        if (helper == null) {
            Helper h;
            synchronized(this) {
                h = helper;
                if (h == null) 
                    synchronized (this) {
                        h = new Helper();
                    } // release inner synchronization lock
                helper = h;
            } 
        }    
        return helper;
    }
    // other functions and members...
}
Run Code Online (Sandbox Code Playgroud)

而且我得到了"Double-Checked Locking is Broken"声明.
我怎么解决这个问题?

java concurrency multithreading locking lazy-loading

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

C#中私有const和私有只读变量之间有区别吗?

在C#中使用private const变量或private static readonly变量之间是否有区别(除了必须分配const编译时表达式)?

由于它们都是私有的,因此没有与其他库的链接.它会有什么不同吗?例如,它可以产生性能差异吗?实习字符串?有什么相似的吗?

c# const readonly

31
推荐指数
5
解决办法
2万
查看次数

在Scala中格式化二进制值

Scala是否有内置的二进制数据格式化程序?

例如,打印输出:00000011表示Int值3.

写一个并不难 - 只是好奇它是否存在.

scala string-formatting

31
推荐指数
4
解决办法
2万
查看次数

如何在C#中的<seealso>标记中创建一个cref to方法重载?

我在MSDN链接中看到诸如"CompareOrdinal Overloads".如何在C#中编写这样的链接?

我试过了:

<seealso cref="MyMethod">MyMethod Overloads</seealso>
Run Code Online (Sandbox Code Playgroud)

但编译器给出了一个警告,即对于具有其他重载的方法是一个模糊的引用.

(初学者问题:我是否真的需要编写此标记来链接到重载,还是由文档处理器自动生成?)

c# xml-documentation

23
推荐指数
3
解决办法
7391
查看次数

易失性和多线程:以下是线程安全的吗?

假设有运行两个线程Thread1(),并Thread2()分别.线程1只设置一个全局标志来告诉线程2退出,线程2定期检查它是否应该退出.

volatile bool is_terminate = false;

void Thread1()
{
    is_terminate = true;
}

void Thread2()
{
    while (!is_terminate) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想问上面的代码是否安全,假设访问is_terminate是原子的.我已经知道许多材料状态,volatile一般不能确保线程安全.但是在只共享一个原子变量的情况下,我们真的需要使用锁来保护共享变量吗?

c++ multithreading volatile

22
推荐指数
2
解决办法
8782
查看次数

用于Rails的Twitter Bootstrap Gems之间的比较

提供Twitter Bootstrap功能的不同宝石有哪些优点和/或缺点?截至撰写此问题时,Ruby Toolbox 列出了以下项目:

甚至其他一些提供部分功能(例如生成表格).这些宝石有何不同?

PS如果合适,请在单独的答案中写下每个宝石,以便每个宝石都可以投票.

css comparison ruby-on-rails twitter-bootstrap

22
推荐指数
1
解决办法
3832
查看次数

比较工厂女孩与制作

关于fabrication宝石的资源似乎很少,我找不到区分它的特征的良好比较factory_girl.随着版本的fabrication-2.2.3factory_girl-4.0.0,我很难找到一个差异.这些宝石如何比较?有什么可以做出fabrication更好的选择?为什么?他们俩都融合了吗?

ruby testing ruby-on-rails fabrication-gem factory-bot

20
推荐指数
3
解决办法
6286
查看次数

为Python的`time.strftime()`使用Unicode格式

我试图time.strftime()使用Unicode格式字符串调用Python的函数:

u'%d\u200f/%m\u200f/%Y %H:%M:%S'
Run Code Online (Sandbox Code Playgroud)

(\u200f是"从右到左标记"(RLM).)

但是,我得到一个例外,即RLM字符无法编码为ascii:

UnicodeEncodeError:'ascii'编解码器无法对位置2中的字符u'\ u200f'进行编码:序数不在范围内(128)

我试图寻找替代方案,但找不到合理的方法.是否有替代此函数的方法,或使其与Unicode字符一起使用的方法?

python unicode

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

如何在Eclipse中配置JUnit的Source?

我正在使用Eclipse Galileo for Java EE,我想配置JUnit以在我尝试导航到它的方法时向我展示源代码.我已尝试将源附加到JUnit库,但库定义不可编辑.我甚至无法在首选项中找到配置JUnit库的位置.

当我打开Add Library窗口并选择JUnit时,我看到一个对话框,我可以在其中选择JUnit版本,但它显示源位置"未找到".

如何配置Eclipse以查找JUnit的源代码?

java eclipse junit

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