小编bac*_*car的帖子

C#中typedef的等价物

在C#中是否有typedef等价物,或者某种类似的行为?我做了一些谷歌搜索,但我看到的每个地方似乎都是负面的.目前我的情况类似于以下情况:

class GenericClass<T> 
{
    public event EventHandler<EventData> MyEvent;
    public class EventData : EventArgs { /* snip */ }
    // ... snip
}
Run Code Online (Sandbox Code Playgroud)

现在,当试图为该事件实现处理程序时,并不需要火箭科学家弄清楚这会很快导致大量输入(为可怕的双关语道歉).它最终会像这样:

GenericClass<int> gcInt = new GenericClass<int>;
gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent);
// ...

private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e)
{
    throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

除了在我的情况下,我已经使用了复杂类型,而不仅仅是一个int.如果有可能简化这一点,那就太好了......

编辑:即.也许键入定义EventHandler而不是需要重新定义它以获得类似的行为.

c# typedef

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

如何在eclipse Package Explorer中显示打开的文件?

当在Eclipse中打开文件(例如.java)时,如何让Package Explorer显示我正在处理的文件?

eclipse

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

如何在Windows中设置长Java类路径?

我正在尝试在Windows XP命令行上手动运行特定的JUnit测试,该命令行在类路径中具有异常多的元素.我尝试了几种变体,例如:

set CLASS_PATH=C:\path\a\b\c;C:\path\e\f\g;....
set CLASS_PATH=%CLASS_PATH%;C:\path2\a\b\c;C:\path2\e\f\g;....
...
C:\apps\jdk1.6.0_07\bin\java.exe -client oracle.jdevimpl.junit.runner.TestRunner com.myco.myClass.MyTest testMethod
Run Code Online (Sandbox Code Playgroud)

(其他变体是将类路径全部设置在一行上,通过-classpath将类路径设置为java的参数").它始终归结为控制台抛出它的错误:

The input line is too long.
The syntax of the command is incorrect.
Run Code Online (Sandbox Code Playgroud)

这是一个JUnit测试,测试一个相当大的现有遗留项目,所以没有关于重新安排我的目录结构更合理的建议,这些类型的解决方案暂时没有.我只是试图对这个项目进行快速测试并在命令行上运行它,控制台正在阻止我.救命!

java junit classpath

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

我可以在pluginManagement中配置多个插件执行,并在我的子POM中选择它们吗?

我有两个常见的插件驱动的任务,我想在我的项目中执行.因为它们很常见,我想将它们的配置移动到pluginMangement共享父POM 的部分.但是,两个任务虽然完全不同,但使用相同的插件.在我的一些项目中,我只想做两个任务中的一个(我并不总是希望运行插件的所有执行).

有没有办法在pluginManagement父pom 的部分中指定插件的多个不同执行,并在我的孩子pom中选择一个(并且只有一个)实际运行的执行?如果我配置2个执行pluginManagement,似乎两个执行都将运行.

注:我想这可能,也可能不会,是问题的一个重复的Maven2 -与pluginManagement和亲子关系的问题,但问题是近4 screenfuls长(TL; DR),一个简洁的重复可能是值得的.

maven-3 maven

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

为什么指定BigDecimal.equals分别比较值和比例?

这不是关于如何比较两个BigDecimal对象的问题 - 我知道你可以使用compareTo而不是equals这样做,因为equals记录为:

与compareTo不同,此方法仅考虑两个BigDecimal对象的值和比例相等(因此通过此方法比较时2.0不等于2.00).

问题是:为什么equals以这种看似违反直觉的方式指定了?也就是说,为什么能够区分2.0和2.00 很重要

似乎必须有这样的理由,因为Comparable指定compareTo方法的文档指出:

强烈建议(尽管不要求)自然排序与equals一致

我想必须有一个很好的理由忽略这个建议.

java bigdecimal

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

结合字段哈希码的简洁方法?

如果一个实现GetHashCode的方式-在那里它必须这样做-由乔恩斯基特概述这里.重复他的代码:

public override int GetHashCode()
{
    unchecked // Overflow is fine, just wrap
    {
        int hash = 17;
        // Suitable nullity checks etc, of course :)
        hash = hash * 23 + field1.GetHashCode();
        hash = hash * 23 + field2.GetHashCode();
        hash = hash * 23 + field3.GetHashCode();
        return hash;
    }
}
Run Code Online (Sandbox Code Playgroud)

用手滚动这个代码可以是容易出错,错误可能是微妙/很难发现(你交换+*误?),它可能很难记住不同类型的组合规则,我不喜欢花费精神努力为不同的领域和课程一遍又一遍地写同样的东西.它还可以模糊重复噪声中最重要的细节之一(我记得包括所有字段吗?).

是否有使用.net库组合字段哈希码的简明方法?.显然我可以写自己的,但如果有一些惯用/内置的东西,我宁愿这样做.

举个例子,在Java中(使用JDK7),我可以使用以下方法实现:

   @Override
   public int hashCode()  
   {  
      return Objects.hash(field1, field2, field3);  
   }  
Run Code Online (Sandbox Code Playgroud)

这确实有助于消除错误并专注于重要细节.

动机:我遇到了一个需要覆盖的C#类GetHashCode(),但它结合各种成分的哈希码的方式有一些严重的错误.用于组合哈希码的库函数对于避免这样的错误是有用的.

c# java hash

24
推荐指数
3
解决办法
9086
查看次数

多次阻止递归CTE访问节点

考虑以下简单的DAG:

  1->2->3->4
Run Code Online (Sandbox Code Playgroud)

还有一个表#bar,描述了这个(我正在使用SQL Server 2005):

parent_id   child_id
1           2
2           3
3           4
//... other edges, not connected to the subgraph above
Run Code Online (Sandbox Code Playgroud)

现在假设我有一些其他任意标准来选择第一个和最后一个边,即1-> 2和3-> 4.我想用这些来查找我的图表的其余部分.

我可以写一个递归CTE如下(我使用的是MSDN中的术语):

with foo(parent_id,child_id) as (
// anchor member that happens to select first and last edges:
select parent_id,child_id from #bar where parent_id in (1,3)
union all
// recursive member:
select #bar.* from #bar
join foo on #bar.parent_id = foo.child_id
)
select parent_id,child_id from foo
Run Code Online (Sandbox Code Playgroud)

但是,这会导致边缘3-> 4被选中两次:

parent_id  child_id
1          2
3          4
2 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server recursion graph common-table-expression

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

在Java中描述实例和参数的方法的执行顺序?

在声明中:

fooFunc().barFunc(bazFunc());
Run Code Online (Sandbox Code Playgroud)

barFunc()显然不能执行,直到双方bazFunc()fooFunc()已完成.

但就是执行的顺序fooFunc()bazFunc()保障?

相关(但不同!)问题: Java中参数的执行顺序保证?

java

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

Apache Camel中"direct:"和to()之间有什么区别?

DirectComponent文档给出了下面的例子:

from("activemq:queue:order.in")
    .to("bean:orderServer?method=validate")
    .to("direct:processOrder");

from("direct:processOrder")
    .to("bean:orderService?method=process")
    .to("activemq:queue:order.out");
Run Code Online (Sandbox Code Playgroud)

这和下面有什么区别吗?

from("activemq:queue:order.in")
    .to("bean:orderServer?method=validate")
    .to("bean:orderService?method=process")
    .to("activemq:queue:order.out");
Run Code Online (Sandbox Code Playgroud)

我试图找到关于to()方法在Java DSL上的行为的文档,但是除了RouteDefinition javadoc之外(它给出了非常简单的"将交换发送到给定的端点")我发现空白:(

apache-camel

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

我可以退出所需的protobuf字段吗?

我有一个客户端 - 服务器应用程序,其中服务器将protobuf格式的序列化对象传输到客户端,我想退出一个required字段.不幸的是,我无法同时更改客户端和服务器以使用新.proto定义.

如果我更改一个required字段optional,但仅用于序列化消息的代码(即反序列化代码尚未重建并仍然认为它是一个required字段),我可以继续发布可以反序列化的消息,只要我填充一个值为现在optional

(看起来这样做很好,至少对于我尝试过的一些微不足道的案例(仅使用Java),但我很感兴趣,如果这是一个普遍合理的方法,是否有任何边缘情况等我应该担心).

动机:我的目标是required在客户端 - 服务器应用程序中淘汰字段,其中服务器发布由客户端反序列化的消息.我的打算是:

  1. required字段更改optional为主干.
  2. 如果需要部署新的服务器代码(针对不相关的功能/修复),请确保在消息中继续填充可选字段.
  3. 逐步为所有客户端部署更新的代码(这需要时间,因为它需要其他团队参与其自己的发布计划)
  4. 确认所有客户端都已更新.
  5. 开始退出(即不填充)可选字段.

backwards-compatibility protocol-buffers

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