小编Sle*_*led的帖子

在Java中的for-statements语句中不使用循环变量是不好的风格?

在Java中的for-each语句中忽略循环变量是否被认为是糟糕的样式/劝阻?

我有一些代码看起来有点像下面这样:

public void makeChecklist( final List<File> inputSrcs ){

   for( File src : inputSrcs ){
      System.out.print( src.getName() + "\t" );
   }
   System.out.println();


   for( File src : inputSrcs ){
      //Not using "src" in this body!
      System.out.print( "[ ]\t" );
   }
   System.out.println();

}
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意吗?有什么理由不这样做吗?它看起来比使用常规for循环更清晰.


PS-假设对于上面的例子我希望复选框出现在名称下面,这个例子被设计为尽可能简单地说明我的问题.

java coding-style

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

如果XQuery包含给定的关键字,则返回文本节点

我的xml文件的测试样本如下所示:

的test.xml

<feed>
  <entry>
    <title>Link ISBN</title>
    <libx:libapp xmlns:libx="http://libx.org/xml/libx2" />
  </entry>
  <entry>
    <title>Link Something</title>
    <libx:module xmlns:libx="http://libx.org/xml/libx2" />
  </entry>
</feed>
Run Code Online (Sandbox Code Playgroud)

现在,我想编写一个xquery,它将找到所有<entry>具有<libx:libapp>子元素的元素.然后,对于所有这样的条目,如果标题包含给定的关键字(例如链接),则返回标题.因此,在我的示例xml文档中,xquery应该返回"Link ISBN".

我的示例xquery如下所示:

samplequery.xq(此处doc_name是上面显示的xml文件,libapp_matchkey是关键字,例如'Link')

declare namespace libx='http://libx.org/xml/libx2';
declare variable $doc_name as xs:string external;
declare variable $libpp_matchkey as xs:string external;
let $feeds_doc := doc($doc_name)

for $entry in $feeds_doc/feed/entry
   (: test whether entry has libx:libapp child and has "Link" in its title child :)
   where ($entry/libx:libapp and $entry/title/text()[contains(.,$libapp_matchkey)])
    return $entry/title/text()
Run Code Online (Sandbox Code Playgroud)

此xquery返回null而不是预期的结果'Link ISBN'.这是为什么?

xpath xquery

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

验证javax.persistance注释?

我想以编程方式检查对象是否满足其javax.persistance注释所指定的内容.我正在为Hibernate DAO 创建一个的单元测试用途.然而,有一个缺陷没有被单元测试捕获,因为假的没有检查@Column注释中字段的长度,Hibernate做了.

显然,我可以添加代码来手动检查这些字段,但我宁愿使用一种方法来检查所有这些字段,因此如果值发生变化,它将是最新的.我尝试使用javax.validation.ValidatorApache的Bean验证,但验证没有发现问题.是否有一个函数可以在不调用完整的Hibernate会话的情况下进行测试?

为了清楚起见,我感兴趣的是模拟Hibernate的"类型检查"而不是bean验证本身,这只是我试图用来执行检查的东西.

import javax.validation.Validation;
@Test( expected = IllegalArgumentException.class )
public shouldComplainBecauseOfNullsOrLength(){
    AclPermission acl = new AclPermission();
    acl.setTarget( "I   am    way    tooo     long   for     this   field   .    " );

    if(  !  Validation.buildDefaultValidatorFactory().getValidator().validate( acl ).isEmpty()  )
        throw new IllegalArgumentException();
    fail( "Should have had a problem with null values." );
}
Run Code Online (Sandbox Code Playgroud)

目前使用此代码,我宁愿用更强大的东西替换.

        for(  String fieldName :   new String[]{ "target", "action", "recipient" }  ){
            final Field field = AclPermission.class.getDeclaredField( fieldName );
            field.setAccessible( true );

            final …
Run Code Online (Sandbox Code Playgroud)

java validation unit-testing hibernate mocking

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

是否有用于创建具有指定大小和内容的列表的实用方法?

public static <T> List<T> repeat(T contents, int length) {
    List<T> list = new ArrayList<T>();
    for (int i = 0; i < length; i++) {
        list.add(contents);
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)

这是我们的专有公共库中的实用方法.它对于创建列表很有用.例如,我可能想要一个包含68个问号的列表来生成大型SQL查询.这使您可以在一行代码中执行此操作,而不是四行代码.

在java/apache-commons中是否有一个实用程序类已经这样做了?我浏览了ListUtils,CollectionUtils,Arrays,Collections,几乎我能想到的一切,但我无法在任何地方找到它.我不喜欢在我的代码中保留通用实用程序方法,如果可能的话,因为它们通常是apache库的冗余.

java utility apache-commons utility-method

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

java 包:找不到符号

我遇到了一个奇怪的错误。我在同一个包中有 2 个类,但它们无法找到彼此。据我记得,只要类位于同一个包中,它们就应该能够调用彼此的方法。

我的代码看起来与此类似:

在A.java中:

package com.mypackage;
public class A{
   public static int read(){
    //some code
   }
}
Run Code Online (Sandbox Code Playgroud)

在B.java中:

package com.mypackage;
public class B{
  public static void main(String args[]){
    int x = A.read();
  }
}
Run Code Online (Sandbox Code Playgroud)

它给了我一个cannot find symbol variable A错误。

这两个类都依赖于一些.jar文件,但我已经包含了这些 jar 的路径CLASSPATHA.java编译得很好,但由于某些原因 B 找不到 A...

当我删除package com.mypackage;两个类中的 时,它们编译得很好。

java package

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

如何在Redis中将值从一个列表复制到另一个列表?

我有一个带有一些值的Redis列表

LRANGE LIST 0 -1
> 1
> 2
> 3
Run Code Online (Sandbox Code Playgroud)

我想把RPUSH这些值放到另一个列表中.如何才能做到这一点?我试图做到这一点的MULTIEXEC,但没有结果.

redis

4
推荐指数
2
解决办法
2538
查看次数

如何在Groovy中定义@CompileStatic兼容的闭包?

我有一个类,其闭包定义为:

void everyPixel( closure ){
    for( def x : 0..width-1 )
        for( def y : 0..height-1 )
            closure( x, y )
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将@CompileStatic注释应用于它,它将不会编译(它在我添加闭包之前做了),并带有以下消息:

Groovyc:[静态类型检查] - 找不到匹配方法java.lang.Object #call(java.lang.Integer,java.lang.Integer).请检查声明的类型是否正确以及方法是否存在.

如何为此创建类型签名以便静态编译?到目前为止,我在Google上的所有点击都说明了如何传递闭包,而不是如何定义接受闭包的方法.: - /

groovy closures groovy++

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

如何针对不同的包进行不同的日志记录?

在Log4j中,很容易在应用程序中将不同的包记录在不同的级别(这对于调试尤其有用).除了创建自己的过滤器之外,还有一种简单的方法吗?

我尝试在根标记内创建一个标记,或者在其名称之后创建一个标记(即让人联想到Log4J),然后将其中的appender放入其中,但它不起作用.

那么,是否内置了LogBack方法来定义不需要自定义过滤器实现的某些包的记录器和/或日志记录级别?

java logging logback

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

为什么 Office OpenXML 在标签之间拆分文本以及如何防止它?

我目前正在尝试使用PHPWord库及其模板系统处理 docx 文件。我已经找到并更新了这个库的路径(不记得名字,但它不重要)可以处理表(复制它的行,然后在每一行上使用 PHPWord 的标准 setValue())。

如果我创建自己的文档,xml中的数据是正常结构,所以要替换的变量 ${variable} 在它自己的标签中,如下所示:

<w:tbl>
    <w:tr>
        ...
         ${variable}
    </w:tr>
</w:tbl>
Run Code Online (Sandbox Code Playgroud)

我简化了代码,在实际代码中还有许多其他标签描述大小、样式等。

我的问题是我必须从其他人那里处理文件,我被禁止进行重大更改,我得到了一份文件,其中在某些时候它们是一个带有一个空白行的表格。我添加了 ${variable} 变量并通过 PHPWord 运行它。问题是,它失败了。经过一番研究,我发现源 XML 如下所示:

    ....
        ...
         ${va

        ...
         riab

        ...
         le}
    ....
Run Code Online (Sandbox Code Playgroud)

(再次大大简化,但你得到了图片)

这种结构对我来说是个问题,因为克隆行的函数使用 strpos()、substr() 和正则表达式来工作,并且不适用于这种结构(我无法想象这样做的优雅方式)。

所以问题是 - 有谁知道为什么 docx 这样做以及如何阻止他?我正在通过 word 而不是 PHP 寻找解决方案(我需要当前的函数无需太多编辑即可工作)

docx openxml phpword

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

UML中的关联是关联对象还是类?

在维基百科上,我读到关联关系是一个实例级关系,所以我们讨论的是两个类的对象之间的关系.

当我们实际绘制类图时,为什么我们在类元素或块而不是对象上使用关联?还有类级别关系,我们再次使用类元素.由于我们没有任何方式来表明我们是在谈论对象还是类,我发现这令人困惑.例如:我听过有人说"关联这两个班级"这听起来不错吗?

uml class-diagram relationships

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