【发布时间】:2023-03-29 05:15:01
【问题描述】:
我有一个对象将一些工作委托给另一个正在实现接口的对象。然后,我正在创建实现此接口的匿名类,我想从中获取信息。
是否可以使用大小为 1 的最终数组作为指向基元的指针来与匿名类共享数据?
这是我的意思的一个工作示例:
public class ExampleClass
{
public static final int INVALID_VALUE = -1;
public static void main(final String[] args)
{
final int[] buffer = { INVALID_VALUE }; // buffer is created
final InterfaceA iaObject = new InterfaceA()
{
@Override
public void doStuff(final String paramA)
{
buffer[0] = paramA.length(); // buffer is filled in anonymous class
}
};
final ClassA objA = new ClassA(iaObject);
objA.doStuff("hello, world");
if (buffer[0] == INVALID_VALUE) // buffer is used
{
System.err.println("Invalid length !");
}
else
{
System.err.println("The length is : " + Integer.toString(buffer[0]));
}
}
public static class ClassA
{
private final InterfaceA iaObject;
public ClassA(final InterfaceA iaObject)
{
this.iaObject = iaObject;
}
public void doStuff(final String paramA)
{
this.iaObject.doStuff(paramA);
}
}
public static interface InterfaceA
{
void doStuff(String paramA);
}
}
谢谢
【问题讨论】:
-
为什么不让 doStuff 返回一个 int 呢?
-
您应该使用 int 而不是数组,因为您只使用一个位置
-
@Zim-ZamO'Pootertoot
doStuff不返回整数,因为我有时需要布尔值、字符串和其他类型的值。 -
@DanielPereira 我必须使用数组,因为我无法在匿名类中引用非最终变量。
-
所以你想要一个可以做任何事情的函数,并且在运行中更新一些全局变量?这闻起来像是糟糕的代码设计。
标签: java arrays oop coding-style buffer