我刚刚在一些代码中发现了一个我没写过的错误,我有点惊讶:
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)
总是优先于非静态模式参考?
IntelliJ IDEA的同事(从事另一个项目)向我展示了惊人的@NotNull注释.我在这里阅读了关于如何开始添加@NotNull的消息,节省了大量时间和头痛(当IntelliL 10检测到null会造成严重破坏时,它甚至可以自动将@NotNull自动添加到旧代码中).
因为我读了我的第一个"可能的@NotNull违规"消息(实时,在IDE中,甚至在一个尚未编译的部分.java文件上),我的下巴掉了下来,我迷上了.
所以我想知道:如果我们想在开发人员同时使用Eclipse和IntelliJ的项目中开始使用@NotNull,还有什么需要知道的吗?
我知道IntelliJ附带了annotations.jar.这与Eclipse兼容吗?
可能重复:
转义属性文件中的等号
在.properties文件中,我可以在第一个之后使用字符'='吗?
像这样:
url=http://www.example.org/test=
Run Code Online (Sandbox Code Playgroud)
它是否被允许,我在哪里可以知道它确实是允许的?
到目前为止它似乎工作,但我不太确定它不会在以后打破.
我是代码库中唯一使用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)
这可以证明是合理的吗?
我可以安全地将所有这些更改为静态调用吗?
编辑关于它(显然)方便的特殊情况:我的问题实际上是"整个代码库中的非静态日志是否合理?"
我正在研究部署在Tomcat服务器上的大型应用程序.只有一个.jsp页面,所有UI都是使用ext-js完成的.
有很多.java类.在其中一个类(执行验证)中,我想添加XML验证,为此我需要访问.xsd文件.
我的问题是我不知道如何干净地找到我的.xsd文件的路径.
我将把.xsd文件放在css /,images /等旁边的一个库中.
我以一种糟糕的方式知道如何:我调用System.getProperty("user.home")并从那里找到我的webapp,xsd /文件夹和.xsd文件.
但是这样做的"干净"方式是什么?
我应该在哪里找到我的webapp(或我的webapp资源)的路径,我应该如何将这些信息传递给执行验证的.java类?
我从未遇到过这种情况,现在我想知道:当/如果两个不同的注释具有相同的名称时会发生什么? (我将在这里使用IntelliJ提供的注释给出一个例子,但这个问题非常通用,所以我没有标记它'IntelliJ')
例如这里的第一句话:
http://youtrack.jetbrains.net/issue/IDEABKL-4959
说:
许多库都有自己的@NotNull注释(intellij,hibernate-validation,..).
如果我想使用IntelliJ @NotNull和Hibernate ,会发生什么@NotNull?(再次@NotNull只是我碰巧发现冲突的一个例子)
它们不兼容吗?如果它们不兼容,是否适用于整个项目?
这是我真的不熟悉的......
在我正在开发的一个项目中,使用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会表现得好像一切都很好:这有什么理由呢?(*)
当从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"会给我错误信息?
在尝试运行单元测试时,我得到以下堆栈跟踪.我甚至不知道从哪里开始寻找(请阅读下面的评论).
我应该从哪里开始,你会怎么做才能解决这个问题?
(请注意,以下堆栈跟踪基本上是我如何从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 ×9
annotations ×2
javabeans ×2
spring ×2
static ×2
unit-testing ×2
eclipse ×1
enums ×1
logging ×1
path ×1
properties ×1
regex ×1
resources ×1
stack-trace ×1
tomcat ×1
xml ×1