我有麻烦了解这一点。基本上,这个查找API是用来保持的松散耦合的模块间的一个具的性质。所以基本服务提供者和消费模块可以每个相互通信的使用查找API正确的吗?

但我不明白的是:

是的查找像一大袋的对象对这类?有人可以得到一个更简单的类比吗?

所以依赖的是创建和实施LookupListener在服务的消费者是否正确?显然的消费者具有依赖供应商。

那么什么是实施的LookupListener听到吗?它是自己查找?因此,如果有一张地图的另一个模块的类别,它将被储存作为一个目内部查找实施LookupListener?

这样的查询是一种像一袋子,可以储存的另一个模块的课程和它的方法吗?

这是正确处理确定一个选择?

  1. 在TopComponent(图)实施查找监听和行动的听众。
  2. 你犯了一个新的对象(从其他模块)
  3. associateLookup(Lookups.singleton(fff)); 再次,混淆这一行:是什么 associateLookup() 确切地在做什么?
  4. result = Utilities.actionsGlobalContext().lookupResult(Browser1.class); 这是什么线在做什么?什么是结果?它包含Browser1类(其他模块)?
  5. result.addLookupListener (this);为什么你会添加听到的结果?和我们听的,为什么在TopComponent?

  6. 做了什么?

最后,我要进一步混乱,如何节点API来到pla7y?

有帮助吗?

解决方案

其他提示

你可以想查找作为一个基本工具,支持 松散耦合的高凝聚力的原则.

基本上你有一个API在 beverage-api 模块:

public interface Beverage {
   ...
}

然后另一个模块 beers 这取决于 beverage-api:

@ServiceProvider(service = Beverage.class)
public class SomeBeer implements Beverage {
   ...
}

在另一个模块,它还取决于 beverage-api 你可以写一个魔幻公式:

Collection list = Lookup.getDefault().lookupAll(Beverage.class);

这会让你一个列表中的所有饮料供应商没有声明的确切依赖于特定类别或具有依赖性这一模块。这是伟大,你的代码不是依赖具体实施时,它足有这些模块上班的路径,他们将"自动神奇"载入应用程序。

associateLookup(Lookups.singleton(fff)); 再次,混淆这一行:什么是associateLookup()究竟在做什么?

是的,这是混淆。基本上你手加入一些对象查找系统。

result = Utilities.actionsGlobalContext().lookupResult(Beverage.class);

Utilities.actionsGlobalContext() 有关当前选定的(活动) TopCompoment.它将返回的一个实例 Beverage.class 如果它存在的活性成分。如果你想要的所有情况的定级应使用 lookupAll().

result.addLookupListener(this); 为什么你会添加听到的结果?

获得通知有关的变化。当用户选择一些 Beverages 对象它触发器 LookupListener 方法:

void resultChanged(LookupEvent ev);

result.allInstances(); 将返回其实例是选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top