小编Str*_*hua的帖子

循环的简写是否缓存了iterable的引用?

我可能试图过度效率,但我一直想知道以下两个代码示例中的哪一个会更快地执行.

假设你要它包含一个对象的引用ArrayListStrings,你想通过该列表进行迭代.以下哪项更有效(即使只是略有不同)?

for(String s : foo.getStringList())
    System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

要么

ArrayList<String> stringArray = foo.getStringList();
for(String s : stringArray)
    System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个循环初始化对列表的引用,而不是每次迭代都调用它,因为它似乎是第一个示例.除非这个概念完全不正确,并且它们都以相同的方式运行,因为Java的内部工作方式创建了自己的引用变量.

所以我的问题是,它是什么?

java performance for-loop

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

LibGDX - 对话框标题不适合

我成功地将我自己的字体添加到默认的 .json 文件并显示出来,但是我遇到了一些奇怪的大小问题。特别是当我尝试创建一个对话框时。这是它的样子:尺寸
忽略说“和”的事实,
如您所见,标题不适合,按钮似乎有点大......这就是我创建对话框的方式:

Dialog d = new Dialog("Error", RBResources.gameSkin);
        d.add(new Label("You cannot continue and empty game.", RBResources.gameSkin));
        TextButton b = new TextButton("Ok", RBResources.gameSkin);
        d.button(b);
        d.show(this);
Run Code Online (Sandbox Code Playgroud)

这是皮肤的初始化方式:

gameSkin = new Skin(Gdx.files.internal("skins/uiskin.json"));
Run Code Online (Sandbox Code Playgroud)

我添加字体所做的只是使用 Hiero 创建字体,将其添加到 .json 目录中,并将 BitmapFont 文件引用从“default.fnt”更改为“text.fnt”(文本就是我所说的字体) .

java fonts dialog libgdx

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

PatternDescr 中的 Drools AndDescr(和 OrDescr)

我以编程方式创建规则文件。这是一个愚蠢的例子:

    PackageDescr pkg = DescrFactory.newPackage()
            .name(Constants.DRL_FILE_PACKAGE)
            .newImport().target(Product.class.getName()).end()
            .getDescr();
    RuleDescr testRule = new RuleDescr();

    RelationalExprDescr expr1 = new RelationalExprDescr("==", false, null, new ExprConstraintDescr("productId.id"), new ExprConstraintDescr(null));
    RelationalExprDescr expr2 = new RelationalExprDescr("==", false, null, new ExprConstraintDescr("operation"), new ExprConstraintDescr("5"));
    OrDescr or = new OrDescr();
    PatternDescr patternDescr = new PatternDescr();
    AndDescr and = new AndDescr();

    or.addDescr(expr1);
    or.addDescr(expr2);

    patternDescr.setObjectType(Product.class.getName());
    patternDescr.addConstraint(or);

    and.addDescr(patternDescr);

    testRule.setLhs(and);
    testRule.setConsequence("System.out.println(\"Hi\");");
    pkg.addRule(testRule);

    String drl = new DrlDumper().dump(pkg);
Run Code Online (Sandbox Code Playgroud)

这会生成以下 DRL 规则:

rule "null"
when
    test.Product( [OR [productId.id == null, operation == 5] ] )  
then …
Run Code Online (Sandbox Code Playgroud)

java drools

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

标签 统计

java ×3

dialog ×1

drools ×1

fonts ×1

for-loop ×1

libgdx ×1

performance ×1