a只能在这里决赛.为什么?如何a在onClick()不将其保留为私有成员的情况下重新分配方法?
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
}
});
}
Run Code Online (Sandbox Code Playgroud)如何5 * a点击它返回?我的意思是,
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
return b; // but return type is void
}
});
}
Run Code Online (Sandbox Code Playgroud)我最近遇到了错误消息"空白的最终字段obj可能尚未初始化".
通常情况下,如果您尝试引用可能尚未分配给值的字段.示例类:
public class Foo {
private final Object obj;
public Foo() {
obj.toString(); // error (1)
obj = new Object();
obj.toString(); // just fine (2)
}
}
Run Code Online (Sandbox Code Playgroud)
我用Eclipse.在行中(1)我得到错误,在行中(2)一切正常.到目前为止这是有道理的.
接下来,我尝试obj在构造函数内创建的匿名接口中访问.
public class Foo {
private Object obj;
public Foo() {
Runnable run = new Runnable() {
public void run() {
obj.toString(); // works fine
}
};
obj = new Object();
obj.toString(); // works too
}
}
Run Code Online (Sandbox Code Playgroud)
这也有效,因为我obj在创建界面时无法访问.我也可以将我的实例传递给其他地方,然后初始化对象obj然后运行我的界面.(但null在使用之前检查是否合适). …
晚上好,
我有一个问题,我想一次将“ finViewById”声明为全局。但是它只能用作本地文件,因此我必须复制并粘贴它们,这很糟糕。
公共类MainActivity扩展了AppCompatActivity {
//(I WANT HERE)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//(IT ONLY works HERE)
Button mygtukas = (Button) findViewById(R.id.pgrButton);
mygtukas.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView laukelis = (TextView) findViewById(R.id.pgrTekst);
laukelis.setText("Bamm, trumpas");
}
}
);
mygtukas.setOnLongClickListener(
new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//(I DON'T WANT THIS COPY as well)
TextView laukelis =(TextView)findViewById(R.id.pgrTekst);
laukelis.setText("Bamm, ilgas");
return true;
}
}
);
}
Run Code Online (Sandbox Code Playgroud) 我想不通为什么在 lambda 表达式中捕获的变量是最终的或有效的最终变量。我看了这个问题,真的没有得到答案。
这个变量捕获是什么?
当我为我的问题搜索解决方案时,我读到这些变量是最终的,因为并发问题。但是对于这种情况,我们为什么不能用reentrant lock对象锁定 lambda 中的任务代码。
public class Lambda {
private int instance=0;
public void m(int i,String s,Integer integer,Employee employee) {
ActionListener actionListener = (event) -> {
System.out.println(i);
System.out.println(s);
System.out.println(integer);
System.out.println(employee.getI());
this.instance++;
employee.setI(4);
integer++;//error
s="fghj";//error
i++;//error
};
}
}
Run Code Online (Sandbox Code Playgroud)
在这个特定的代码中,我想知道为什么最后三个语句给出错误的原因,以及为什么我们要变异,Employee因为它是一个局部变量。(Employee 只是一个带有 getter 和 setter 的类int i。)
我也想知道为什么我们也可以变异this.instance。
我感谢对我上面提到的所有事实的完整详细回答。