我可能试图过度效率,但我一直想知道以下两个代码示例中的哪一个会更快地执行.
假设你要它包含一个对象的引用ArrayList的Strings,你想通过该列表进行迭代.以下哪项更有效(即使只是略有不同)?
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的内部工作方式创建了自己的引用变量.
所以我的问题是,它是什么?
我成功地将我自己的字体添加到默认的 .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”(文本就是我所说的字体) .
我以编程方式创建规则文件。这是一个愚蠢的例子:
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)