小编Wou*_*rts的帖子

Joda-time中的LocalDate间隔

Joda-time有一个Interval类,它是DateTime之间的范围.什么可以用于一系列的LocalDate

我想要一个对象,例如"从2011年1月1日到10/1/2011",没有时间(或时区)进入图片.

据我所知,joda-time没有内置任何东西.如果它没有任何东西,我们创造它,它应该是什么样子?最重要的是,joda-time的哪些接口可以实现最佳集成到其他类型,与joda-time设计保持一致?它的实施ReadableInterval,地点getStartgetEnd返回DateMidnight是否有意义?

java jodatime

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

在Java 8上设置maven单元测试的时区

如何在Java 8上的maven surefire中设置单元测试的时区?

使用Java 7时,过去常常使用systemPropertyVariables以下配置,但使用Java 8时,测试只使用系统时区.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <systemPropertyVariables>
      <user.timezone>UTC</user.timezone>
    </systemPropertyVariables>
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该如何解决?

java timezone surefire maven java-8

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

Java泛型类型中的通配符参数在其范围内的正式条件是什么?

使用Java中的参数化类型,检查参数是否在其绑定工作中的规则如何完全针对通配符?

鉴于这样的类:

class Foo<T extends Number> {}
Run Code Online (Sandbox Code Playgroud)

试验编译器接受的内容可以了解:

  • ? extends使用不相关的接口类型被允许通配符:Foo<? extends Runnable>是有效
  • 一个? extends使用一个不相关的类类型是不允许的通配符:Foo<? extends Thread>无效.这是有道理的,因为没有类型可以是两者的亚型NumberThread
  • ? super通配符中,通配符的下限必须是类型变量的边界的子类型:Foo<? super Runnable>不允许,因为Runnable它不是子类型Number.同样,这种限制非常有意义.

但这些规则在哪里定义?看看Java语言规范第4.5节,我没有看到任何区别于类的接口; 在应用我对JLS的解释时,Foo<? super Runnable>据说是有效的.所以我可能误解了一些东西.这是我的尝试:

从JLS的那一部分:

参数化类型由类或接口名称C和实际类型参数列表<T1,...,Tn>组成.如果C不是泛型类或接口的名称,或者实际类型参数列表中的类型参数的数量与C的已声明类型参数的数量不同,则是编译时错误.在下文中,每当我们说话时除了明确排除之外,我们还包括类或接口类型的通用版本.在本节中,让A1,...,An成为C的形式类型参数,并且让Bi为AI的声明边界.符号[Ai:= Ti]表示用类型Ti替换类型变量Ai,1 <= i <= n,并且在整个说明书中使用.

令P = G <T1,...,Tn>是参数化类型.必须是这样的情况,在P经历捕获转换(第5.1.10节)之后导致类型G <X1,...,Xn>,对于每个实际类型参数Xi,1 <= i <= n, Xi <:Bi [A1:= X1,...,An:= Xn](§4.10),或发生编译时错误.

将其应用于P = Foo<? super Runnable>:得到C = Foo,n = …

java generics jls

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

在git中单独合并提交的目的是什么?

当您将两个分支合并在一起时,git会创建一个单独的提交,其中包含一条消息Merge branch 'master' into my-branch.对于非平凡的合并,我很清楚这很有用:它将事物合并的历史记录与任何其他更改分开.但是当合并很简单时(例如,当两个分支不影响任何共同的文件时),单独的合并提交的目的是什么?

您可以避免使用该提交git merge --no-commit.然后,您也可以在此提交中添加"真实"更改.这样你就可以避免看似毫无用处的额外提交.但是该手册页警告说:

您应该避免滥用此选项以将重大更改隐藏到合并提交中.像碰撞版本/版本名称这样的小修正是可以接受的.

这是为什么?

如果提交中的实际更改标记为o仅合并提交X,则这是以下两种情况之间的区别:

o---o-o-o---o--- master
 \   \   \   \
  o-o-X-o-X-o-X-o--- my-feature


o---o-o-o---o--- master
 \   \   \   \
  o-o-o---o---o--- my-feature
Run Code Online (Sandbox Code Playgroud)

为什么第一个优先于第二个呢?

PS:假设我的功能是其他人也使用的公共分支,因此不能选择rebase.

git merge

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

作为参数给出的Bash函数调用命令

你如何在bash中编写一个函数来执行它作为参数给出的命令,其中

  • 给定命令可以是别名
  • 参数必须完全按照给定的方式传递; 没有评估可以做

换句话说,如何编写尽可能透明的包装函数.

包装函数的目标可以是例如在给定命令之前和之后设置当前目录,和/或设置环境变量,或者给定命令花费多长时间,...作为一个简单的例子,我在这里采取一个函数只打印一行然后执行给定的命令.

第一次尝试:

function wrap1 {
   echo Starting: "$@"
   "$@"
}
Run Code Online (Sandbox Code Playgroud)

你可以像使用它一样wrap1 echo hello.但问题是你不能做alias myalias echo,然后调用wrap1 myalias hello:它不会解决别名.

另一种尝试使用eval:

function wrap2 {
   echo Starting: "$@"
   eval "$@"
}
Run Code Online (Sandbox Code Playgroud)

现在调用别名有效.但问题是它也会对参数进行评估.例如,wrap2 echo "\\a"打印a而不是\a因为参数被评估两次.

shopt -s expand_aliases 这似乎也没有帮助.

有没有办法同时评估像wrap2这样的别名,但仍然像wrap1一样直接传递参数?

bash alias eval

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

在Flex ComboBox中为空

如何制作用户可以选择的ComboBox null

如果您只是在数据提供者null中创建一个组合框,则会显示该值,但用户无法选择它:

<mx:ComboBox id="cb" dataProvider="{[null, 'foo', 'bar']}" />
Run Code Online (Sandbox Code Playgroud)

有没有办法让null可选?

解决方法是将一个项添加到dataProvider中,该项不是null但是'表示'为null; 然后每次访问组合框时在null和该对象之间进行映射.但这不是一个优雅的解决方案; 在访问'可空'组合框的所有代码中,你总是要记住这个映射...

编辑:扩展为什么我不喜欢变通方法:当然可以在子类中完成,但要么我引入新属性(如nullableSelectedItem); 但是你必须小心,始终使用这些属性.或者我覆盖ComboBoxes selectedItem; 但是我很害怕打破基类:它可能不喜欢改变它对当前所选项目的内容的想法.即使这个脆弱的破解工作,在顶部selectedItemdataProvider那么这个nullItem也需要进行处理的特殊datalistData用于渲染,在labelFunction,然后它可能仍然在事件暴露了组合框发送...这可能会奏效,但它是一个相当hack只是为了解决这个问题:如果用户点击它没有激活它的项目(其余的则ComboBox处理null罚款).(另一个替代方案是将一个ui组件委托给ComboBox,但是为了避免这个小问题,甚至还有更多的代码)

apache-flex null combobox

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

标签 统计

java ×3

alias ×1

apache-flex ×1

bash ×1

combobox ×1

eval ×1

generics ×1

git ×1

java-8 ×1

jls ×1

jodatime ×1

maven ×1

merge ×1

null ×1

surefire ×1

timezone ×1