1

我正在编写一个 Java 应用程序,其中包含一个从用户钱包中扣款的通用模块。

所以类如下:

public class BuyGiftForMyselfCallable implements Callable<Boolean> {

private String username;
private long coins;

public BuyGiftForMyselfCallable(final String username,final long coins) {
    this.username=username;
    this.coins=coins;
}

@Override
public Boolean call() throws Exception {

    ...
    }

我想将这个类传递给一个不知道 BuyGiftForMyselfCallable 的函数。它只知道Callable!

所以我有以下内容:

function receiver(Callable<*> func) {
...
} 

如何在这个函数中创建类的新实例并将参数传递给构造函数,而不知道类的来源?

4

2 回答 2

0

在这里, Callable 不是在寻找 的类型BuyGiftForMyselfCallable,而是在寻找它的 return: Boolean

所以使用Callable<Boolean>,IE:

public void receive(Callable<Boolean> func){
  ...
}

此外,您不会在此函数中创建 Callable 类的实例,而是在其他地方(构造函数和所有)创建它们 - 然后将它们传递给此函数。

于 2013-02-24T15:54:03.020 回答
0

您可以在此处使用反射示例或使用instanceof来找出实现类是什么,然后用它做任何你想做的事情。但是正如@vikingsteve 在评论中提到的那样,您应该使用不同的方法来避免这样做的必要性

于 2013-02-24T16:08:49.630 回答