问题列表 - 第15594页

".equals"和"=="之间有什么区别?

我今天换了讲师,他说我用了一个奇怪的代码.(他说最好使用.equals,当我问为什么时,他回答"因为它是!")

所以这是一个例子:

if (o1.equals(o2))
{
 System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)

而不是我习惯的:

if (o1 == o2)
{
  System.out.println("Both integer objects are the same");
}
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么区别.为什么他的方式(使用.equals)更好?

通过快速搜索找到了这个,但我无法理解这个答案:

java equals

65
推荐指数
3
解决办法
10万
查看次数

单元测试 - 使用不覆盖等于的对象检查方法调用

这是关于如何使用模拟对象对Java类进行单元测试的一般问题.
我可以用这个例子总结我的问题.
假设我有一个名为MyInterface.java的接口和一个不覆盖equals()的"TwoString"对象

"TwoString.java"

   private String string1;
   private String string2;

   public TwoString(String string1, String string2) {
     this.string1 = string1;
     this.string2 = string2;
   }
   ...getters..setters..
Run Code Online (Sandbox Code Playgroud)

"MyInterface.java"

void callMe(TwoString twoString);
Run Code Online (Sandbox Code Playgroud)

然后我有"MyClass.java"对象.它的构造函数接受MyInterface的具体实现.
MyClass methodToTest()包含以某种方式创建TwoString对象的逻辑.假设它将被创建为

new TwoString("a","b")
Run Code Online (Sandbox Code Playgroud)

因此,当调用methodToTest()时,它会创建这个将传递给接口方法callMe(TwoString twoString)的TwoString对象.

我基本上想要模拟界面.使用此mock创建一个MyClass对象.然后验证是否使用TwoString的特定实例调用了mock方法.

我正在使用EasyMock,这是一些java代码

"MyClassTest.java"

public void test() throws Exception {   
   MyInterface myInterfaceMock = createMock(MyInterface.class);
   MyClass myClass = new MyClass(myInterfaceMock);

   myInterfaceMock.callMe(new TwoString("a","b"));   <--- fails here
   expectLastCall();
   replay(myInterfaceMock);

   myClass.methodToTest();
   verify(myInterfaceMock);
Run Code Online (Sandbox Code Playgroud)

这就是问题所在.我期待在调用中的TwoString对象

myInterfaceMock.callMe(new TwoString("a","b"));
Run Code Online (Sandbox Code Playgroud)

与MyClass.methodToTest()中生成的不同,因为TwoString.java不会覆盖equals.

我可以跳过TwoString实例上的问题

myInterfaceMock.callMe((TwoString)anyObject());
Run Code Online (Sandbox Code Playgroud)

但我想确保使用TwoString的特定实例调用接口方法,该实例包含"a"作为string1而"b"作为string2.

在这种情况下,TwoString对象非常简单,并且很容易覆盖equals方法 - 但是如果我需要检查更复杂的对象该怎么办.

谢谢

编辑:

我将尝试使用此示例使其更具可读性

public …
Run Code Online (Sandbox Code Playgroud)

java testing unit-testing easymock mocking

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

是否有可能在C#中生成复杂的音调?

我需要创建一个包含许多不同频率音调的声音.有没有办法在C#中做到这一点?

到目前为止,我见过的唯一的音调生成方法涉及console.beep,它可以工作,但仅适用于纯音(单频).

c# audio beep

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

我可以在卫星装配中组合本地资源吗?

我有很多当地的资源文件

  • /Controls/App_LocalResources/SomeControl.ascx.resx,
  • /Pages/App_LocalResources/SomePage.aspx.resx等

我想添加另一种语言,我不想浏览所有文件夹并添加SomeControl.ascx.de.resx文件,然后必须重新编译整个思考.

我想使用附属程序集并将所有文件嵌入到MyWebPage.de.dll之类的内容中

这在VS2003版本中可用于全局资源,但我不确定我可以在VS2008版本中为本地资源执行此操作吗?

我正在使用以下语法访问资源:

<asp:label id="lblSomething" runat="server" meta:resourcekey="labelFirstName"/>
Run Code Online (Sandbox Code Playgroud)

asp.net localization

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

依赖注入最佳实践

我在我的代码中使用依赖注入(使用Ninject),并且认为我做得很好,直到遇到由于误解DI容器适合代码的地方而导致的性能问题.似乎有很多关于如何使用DI框架的信息,但没有太多关于不使用它们的地方或如何最好地使用它们(至少我能找到)

我以为我会写出我认为最好的做法,看看其他人是否同意我以及人们可以提出的其他最佳做法.

  • 每个应用程序或AppDomain使用一个内核
  • 仅将DI容器用于长寿命Singleton对象,将工厂(或其他方法)用于短期瞬态对象)
  • 更喜欢构造函数注入属性或字段注入
  • 请求对象,不要构建它们
  • 其他??指向好博客的文章/文章?

dependency-injection ioc-container

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

如何计算两个地方之间的距离?Google Map for iphone是否提供任何服务?

我想把设施放在显示用户选择的两个地方之间的距离.

是否有可用的示例源代码/服务?

提前致谢.

iphone location distance

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

使用XmlSerializer序列化派生类

我正在使用XMLSerializer来序列化包含通用列表的对象

List <ChildBase> Children {get;set}

问题是每个元素ChildBase实际上都是抽象类.当我尝试反序列化时,我得到一个invalidOperationException

有没有办法可以将XMLSerializer与派生对象一起使用?谢谢.

c# xml-serialization

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

什么是java中的条件变量?

Q1.什么是Java中的condVar?如果我看到下面的代码,条件变量是否必须在' mutex.acquire() '和' mutex.release() '块中?

public void put(Object x) throws InterruptedException {
   mutex.acquire();
   try {
      while (count == array.length)
      notFull.await();
      array[putPtr] = x;
      putPtr = (putPtr + 1) % array.length;
      ++count;
      notEmpty.signal();
  }
  finally {
     mutex.release();
  }
}
Run Code Online (Sandbox Code Playgroud)

我有三个线程myThreadA,myThreadB,myThreadC运行,调用相同的函数commonActivity(),触发函数myWorkReport(),例如

public void myWorkReport(){
    mutexMyWork.acquire();
    try{
         while(runMyWork){
             doWork();
             conditionMyWork.timedwait(sleepMyWork);
         }
    }
    finally{
       mutexMyWork.release()
    }    
}

public void commonActivity(){
    try{
        conditionMyWork.signal(); 
    }finally{
        //cleanup
    }   
}

public void myThreadA(){
    mutexA.acquire();
    try{
        while(runningA){    //runningA …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

Eclipse PDT:如何让它像VIM一样格式化我的PHP数组?

我一直在努力让Eclipse像vim缩进那样格式化我的php数组.

日食的作用(按CTRL + SHIFT + F)

<?php
$array = array(
'key1' => 'value1',
'key2' => array(
'child_key1' => 'child_value1',
'child_key2' => 'child_value2',
),
);
Run Code Online (Sandbox Code Playgroud)

vim做什么(按键:gg = G)

<?php
$array = array(
  'key1' => 'value1',
  'key2' => array(
    'child_key1' => 'child_value1',
    'child_key2' => 'child_value2',
    ),  
  );  
Run Code Online (Sandbox Code Playgroud)

我已经尝试查看首选项> PHP>代码样式>格式化程序和首选项> PHP>编辑器>模板,但没有找到任何东西.
提前致谢.
克旱

php arrays vim eclipse-pdt indentation

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

使Linq返回对象或null

如果没有找到对象,有没有办法让下面的代码返回null?

var news = (from c in childs
where c.Name.ToLower().Contains("folder")
select c).First();
Run Code Online (Sandbox Code Playgroud)

linq

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