Java 如何定义一个类并将其实例创建为一个构造
我想减少以下代码行。不必声明该类,然后创建该类的实例来运行run方法。应该可以编写代码,这样就可以定义类并将其实例创建为一个构造。我仍然需要runOnUiThread来实际运行它,但我正在寻找一种浓缩的方式来组合类定义和实例化。我在某个地方看过,但记不起是怎么做到的:Java 如何定义一个类并将其实例创建为一个构造,java,Java,我想减少以下代码行。不必声明该类,然后创建该类的实例来运行run方法。应该可以编写代码,这样就可以定义类并将其实例创建为一个构造。我仍然需要runOnUiThread来实际运行它,但我正在寻找一种浓缩的方式来组合类定义和实例化。我在某个地方看过,但记不起是怎么做到的: class OnRunnableCompleted implements Runnable { @Override public void run() { } } OnRunnableCompleted onRu
class OnRunnableCompleted implements Runnable
{
@Override
public void run()
{
}
}
OnRunnableCompleted onRunnableCompleted = new OnRunnableCompleted();
runOnUiThread(onRunnableCompleted);
这将创建一个实现Runnable
接口的方法,并将抽象run()
方法重写为no-op
匿名类的一般形式是
new Name(superCtorParam0, superCtorParam1) {
member0;
member1;
}
在哪里
Name
是要扩展/实现的接口或类的名称superCtorParam
0…n是Name
的构造函数的参数member
0…n是匿名类的字段、方法、初始值设定项、内部类,就像在任何其他类声明中一样Runnable calculatePI = new Runnable(){
public void run(){/*calculate pi*/}
}
//Any time you need to calculate pi
runOnUiThread(calculatePI);
这样可以减少代码并防止重复创建匿名类。在我的android开发中,我经常使用这个解决方案。工作正常。在JDK 8中,您可以执行以下操作:
yourMethod(() -> System.out.println("RUN!"));
使用匿名类作为
runOnUiThread(new Runnable() { public void run() {} });
就这样。我忘了它被称为“匿名类”。JDK 8中是否存在runOnUiThread函数?我认为这是安卓系统的例子。更重要的是,OP并没有告诉任何关于Android的事情,只告诉了java.Approved,并保证Android开发没有明确规定+1“防止重复创建匿名类”是什么意思???即使重复它是一个问题,它到底有什么问题呢?如果您的GUI经常更新,这会产生更少的垃圾,并简化您的代码逻辑。我想迈克已经回答了你的匿名课堂提问。你说的“产生更少的垃圾”是什么意思?你是说匿名类会产生更多的垃圾吗?是的。如果重复快速创建,并且您的应用程序是实时的(即音频、重图形,如游戏),这是一个有意义的观察。否则就不体面了。
runOnUiThread(new Runnable() { public void run() {} });