小编Gug*_*see的帖子

"静态"模式不应该是静态的吗?

我刚刚在一些代码中发现了一个我没写过的错误,我有点惊讶:

Pattern pattern = Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");
Matcher matcher = pattern.matcher(s);
Run Code Online (Sandbox Code Playgroud)

尽管这个代码在输入数据上严重失败,但我们得到了(因为它试图找到17.01.2011格式的日期并找回10396/2011之类的内容然后崩溃,因为它无法解析日期,但实际上是 'a'这个问题的重点;)我想知道:

  • 不是点之一Pattern.compile是一个速度优化(由预编译正则表达式)?

  • 不应该将所有"静态"模式总是编译成静态模式吗?

在网络上有很多例子,使用Pattern.compile总是重新编译相同的模式,我开始怀疑我是否看到了东西.

不是(假设字符串是静态的,因此不是动态构造的):

static Pattern pattern = Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");
Run Code Online (Sandbox Code Playgroud)

总是优先于非静态模式参考?

java regex static pattern-matching

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

在IntelliJ和Eclipse开发人员都在工作的项目中使用@NotNull

IntelliJ IDEA的同事(从事另一个项目)向我展示了惊人的@NotNull注释.我在这里阅读了关于如何开始添加@NotNull的消息,节省了大量时间和头痛(当IntelliL 10检测到null会造成严重破坏时,它甚至可以自动将@NotNull自动添加到旧代码中).

因为我读了我的第一个"可能的@NotNull违规"消息(实时,在IDE中,甚至在一个尚未编译的部分.java文件上),我的下巴掉了下来,我迷上了.

所以我想知道:如果我们想在开发人员同时使用Eclipse和IntelliJ的项目中开始使用@NotNull,还有什么需要知道的吗?

我知道IntelliJ附带了annotations.jar.这与Eclipse兼容吗?

java eclipse annotations intellij-idea

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

Java属性文件规范

可能重复:
转义属性文件中的等号

在.properties文件中,我可以在第一个之后使用字符'='吗?

像这样:

url=http://www.example.org/test=
Run Code Online (Sandbox Code Playgroud)

它是否被允许,我在哪里可以知道它确实是允许的?

到目前为止它似乎工作,但我不太确定它不会在以后打破.

java specifications properties

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

非静态日志可以证明合理吗?

我是代码库中唯一使用Apache commons日志记录完成日志记录的维护者.

所有类都包含这两个导入:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Run Code Online (Sandbox Code Playgroud)

然后很多类包含非静态日志实例化,如下所示:

/** The log. */
private Log log = LogFactory.getLog(Xyz.class);
Run Code Online (Sandbox Code Playgroud)

这可以证明是合理的吗?

我可以安全地将所有这些更改为静态调用吗?

编辑关于它(显然)方便的特殊情况:我的问题实际上是"整个代码库中的非静态日志是否合理?"

java logging static

8
推荐指数
2
解决办法
1609
查看次数

Tomcat:找到资源的正确方法?

我正在研究部署在Tomcat服务器上的大型应用程序.只有一个.jsp页面,所有UI都是使用ext-js完成的.

有很多.java类.在其中一个类(执行验证)中,我想添加XML验证,为此我需要访问.xsd文件.

我的问题是我不知道如何干净地找到我的.xsd文件的路径.

我将把.xsd文件放在css /,images /等旁边的一个库中.

我以一种糟糕的方式知道如何:我调用System.getProperty("user.home")并从那里找到我的webapp,xsd /文件夹和.xsd文件.

但是这样做的"干净"方式是什么?

我应该在哪里找到我的webapp(或我的webapp资源)的路径,我应该如何将这些信息传递给执行验证的.java类?

java resources tomcat path

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

当两个不同的注释具有相同的名称时会发生什么?

我从未遇到过这种情况,现在我想知道:当/如果两个不同的注释具有相同的名称时会发生什么? (我将在这里使用IntelliJ提供的注释给出一个例子,但这个问题非常通用,所以我没有标记它'IntelliJ')

例如这里的第一句话:

http://youtrack.jetbrains.net/issue/IDEABKL-4959

说:

许多库都有自己的@NotNull注释(intellij,hibernate-validation,..).

如果我想使用IntelliJ @NotNull和Hibernate ,会发生什么@NotNull(再次@NotNull只是我碰巧发现冲突的一个例子)

它们不兼容吗?如果它们不兼容,是否适用于整个项目?

这是我真的不熟悉的......

java annotations

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

Java:在XML中定义bean是一种好习惯吗?

在我正在开发的一个项目中,使用Spring,我看到了一些令人难以理解的东西.显然,有些单元测试需要bean才能工作,而这些bean是从XML文件创建的,包含以下内容:

<bean class="...ListDTO">
 <constructor-arg>
  <map>
   <entry key="use1key">
    <value>use1value</value>
   </entry>
   <entry key="use2key">
    <value>use2value</value>
   </entry>
  </map>
 </constructor-arg>
 <constructor-arg>
  <map>
   <entry key="nature1key">
    <value>nature1value</value>
   </entry>
   <entry key="nature2key">
    <value>nature2value</value>
   </entry>
  </map>
 </constructor-arg>
 <constructor-arg>
  <value>false</value>
 </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

那发生了什么?类的构造函数... ListDTO已更改,因此显然无法从此(非常详细的IMHO)XML创建bean.

有人可以解释一下,为什么将这样的东西放在XML而不是Java代码中是一种好的做法(它真的吗?)?如果是在Java代码中,只要... ListDTO改变了单元测试就会拒绝编译(即使实例化那个bean的单元测试部分没有被执行[无论出于何种原因]).

额外的问题:除了运行所有的单元测试之外,还有一种方法可以在一个项目中轻松找到所有这些破碎的"XML中的bean",查看哪些是失败的,然后进行冲洗和重复?

对我来说,似乎是一个非常严重的问题,你可以改变一个构造函数,并且IDE会表现得好像一切都很好:这有什么理由呢?(*)

java xml unit-testing javabeans

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

Spring,beans和enum的valueOf

当从Eclipse调用Spring的"Validate"时,当我想使用Enum的隐式"valueOf"方法返回枚举时,我会遇到很多错误.

例如:

<bean id="docFamily" class="...DocFamily" factory-method="valueOf">
    <constructor-arg>
      <value>LOGY</value>
    </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

有Eclipse告诉我:

工厂bean类中找不到1个参数的非静态工厂方法'valueOf'...

但是据我从文档中了解到:

BeanWrapperImpl支持JDK 1.5枚举和旧式枚举类:字符串值将被视为枚举值名称

所以上面应该正常吗?(在这种情况下,btw是'constructor-arg'正确的标签,不应该是'method-arg'吗?).

为什么Eclipse/Spring的"Validate"会给我错误信息?

java enums spring javabeans

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

Java:如何从神秘的堆栈跟踪中理解?

在尝试运行单元测试时,我得到以下堆栈跟踪.我甚至不知道从哪里开始寻找(请阅读下面的评论).

我应该从哪里开始,你会怎么做才能解决这个问题?

(请注意,以下堆栈跟踪基本上是我如何从Eclipse获取它,没有任何格式或任何东西:每个大约120个字符的无数行) [我只粘贴了显然问题发生的五行]

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'acceptanceChain' defined in class path resource 

[.../chain/connector/...xml]: Cannot resolve reference to bean 'xxxCommand' while setting constructor argument with key [0]; nested exception is 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxCommand' defined in class path resource 

[.../bl/chain/connector/....xml]: Cannot create inner bean 'yyyDTO#1d95da7' of type [yyyListDTO] while setting bean property 'yyyListDTO'; nested exception 

is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'yyyListDTO#1d95da7' defined in class path resource 

[zzz.xml]: Unsatisfied dependency expressed …
Run Code Online (Sandbox Code Playgroud)

java spring unit-testing stack-trace

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