它在java中是什么意思?我在哪里可以获得更多信息?
对于这个愚蠢的问题,我很抱歉,但我是Java新手,我想知道这个语法是什么意思,以及在哪里可以获得有关它的更多信息:它在java中是什么意思?我在哪里可以获得更多信息?,java,android,Java,Android,对于这个愚蠢的问题,我很抱歉,但我是Java新手,我想知道这个语法是什么意思,以及在哪里可以获得有关它的更多信息: (...) //I would like to know what does this syntax mean btvisualizar.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // some cod
(...)
//I would like to know what does this syntax mean
btvisualizar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// some code here
}
});
(...)
我是从这个话题上得到的:
我认为它与C#中的“lambda表达式”有关,这是同一回事吗?它被称为匿名内部类。请参阅属于匿名内部类的。您可以使用它来代替此代码:
btvisualizar.setOnClickListener(new MyClickListener());
在这里单击Listener类:
public class MyClickListener implements View.OnClickListener {
public void onClick(View v) {
// some code here
}
}
OnClickListener
?我假设只要用户单击visualiser,传入visualiser视图实例,就会调用传递的匿名类实例中的onClick
。正如其他人所指出的,这是一个匿名内部类。它是创建View.OnClickListener新子类的语法速记,该子类用您想要的行为重写onClick()方法
你的直觉认为这与C#lambda表达式有关,这是相当准确的。尽管Java还没有lambdas,但您可以通过使用“apply”方法创建对象并传递对它的引用来模拟lambdas。此技术用于Java函数式编程库。下面是一个例子:
导入fj.F;
导入fj.data.Array;
导入静态fj.data.Array.Array;
导入静态fj.data.List.fromString;
导入静态fj.function.Characters.isLowerCase;
公共最终类数组_存在{
公共静态void main(最终字符串[]args){
最终数组a=数组(“你好”、“那里”、“什么”、“天”、“是”、“它”);
最终布尔值b=a.exists(新的F(){
公共布尔值f(最终字符串s){
从string.forall返回(小写);
}
});
System.out.println(b);//true(“what”提供了唯一的示例;请尝试删除它)
}
}
您可以创建一个新的F
,它有一个名为F
的apply方法,而不是onClick()
另请参见我不是java专业人士,但我要用易于理解的术语将其分解: 我假设btvisualizar是代码中的一个可点击对象,比如一个按钮,并且您已经将它映射到了一个按钮或者布局中的任何东西
btvisualizar.setOnClickListener(new View.OnClickListener() {
//This is basically telling the compiler that you want to make btvisualizar, when clicked on, do something, which you will tell it what to do below.
public void onClick(View v) {
//This begins the OnClick statement, anything you put between { and } here is your code as for what to do when clicked on
}
});
@克莱顿,不客气!功能性Java站点既有Java 1.5示例(),也有使用Java 7 BGGA闭包方案()的示例。
btvisualizar.setOnClickListener(new View.OnClickListener() {
//This is basically telling the compiler that you want to make btvisualizar, when clicked on, do something, which you will tell it what to do below.
public void onClick(View v) {
//This begins the OnClick statement, anything you put between { and } here is your code as for what to do when clicked on
}
});