是否可以在运行时增加(或更改一般)接口的附加值?例如,整数用作变量,是否可以在添加变量后递增变量?
假设我有SafeHtmlTemplates界面:
public interface MyTemplate extends SafeHtmlTemplates {
@Template("<div id=\"{0}\"></div>")
SafeHtml temp(Integer id);
}
如果我要使用它:
MyTemplate tpls = GWT.create(MyTemplate.class);
for (int i = 0; i < 2; i++) {
tpls.temp(i);
}
我会得到:
<div id="0"></div>
<div id="1"></div>
但是我想得到:
<div id="1"></div>
<div id="2"></div>
在以某种方式添加{0}之后递增{0}(类似于{0} + {offsetVariable}
,到目前为止我认为这是不可能的(或者我只是无法弄清楚如何做到这一点)。
有什么想法吗?
答案 0 :(得分:2)
你可以使用这样的助手类:
public class MyTemplateHelper implements MyTemplate {
private MyTemplate tpls = GWT.create(MyTemplate.class);
@Override
public SafeHtml temp(Integer id) {
return tpls.temp(id + 1);
}
}
请注意,MyTemplateHelper
可以实施MyTemplate
。
比较用法:
MyTemplate tpls;
tpls = GWT.create(MyTemplate.class); // original template class
for(int i = 0; i < 2; i++)
tpls.temp(i);
// you'll get:
// <div id="0"></div>
// <div id="1"></div>
tpls = new MyTemplateHelper(); // helper class
for(int i = 0; i < 2; i++)
tpls.temp(i);
// you'll get:
// <div id="1"></div>
// <div id="2"></div>