当前位置: 首页 > 面试题库 >

共享除前缀之外的所有位置或使用PlaceHistoryMapperWithFactory的位置

长孙鸿振
2023-03-14
问题内容

在我的gwt-app中,我有一些共享前缀的地方(例如“ editUserPlace”和“
showUserPlace”-在这种情况下,状态由userId确定)我当前的尝试是通过“ ShowUserPlace”扩展抽象的“ UserPlace”和“
EditUserPlace”它们仅在一行中有所不同:@Prefix(“ showUser”)/ @Prefix(“
editUser”)-必须复制孔标记程序代码(我不能继承标记程序代码,但可以覆盖前缀)。

https://groups.google.com/d/topic/google-web-
toolkit/pghMLX27Y4Y/discussion中,托马斯建议使用“
PlaceHistoryMapperWithFactory”,但我坚持使用。

我是否必须为每个场所/令牌生成器(也为“正常”场所-
提供自己的令牌生成器)提供一种方法?我是否必须将我的Abstract和/或扩展类广告到@WithTokenizer?我应该如何/在何处调用setFactory?

是否有人使用过PlaceHistoryMapperWithFactory(可能在类似的用例中)?并给出一些建议?是否有人面对相同的问题并以另一种方式解决了这个问题?


问题答案:

那家工厂应该工作:

class MyFactory {
   @Prefix("showUser")
   public PlaceTokenizer<ShowUserPlace> showUserPlace() {
      return new UserPlaceTokenizer<ShowUserPlace>() {
         protected ShowUserPlace createPlace(String id) {
            return new ShowUserPlace(id);
         }
      };
   }

   @Prefix("showUser")
   public PlaceTokenizer<EditUserPlace> showUserPlace() {
      return new UserPlaceTokenizer<EditUserPlace>() {
         protected EditUserPlace createPlace(String id) {
            return new EditUserPlace(id);
         }
      };
   }
}

abstract class UserPlaceTokenizer<P extends UserPlace> implements PlaceTokenizer<P> {
   public P getPlace(String token) {
      // shared logic between both places: parses ID (or whatever) from token
      return createPlace(id);
   }
   public String getToken(P place) {
      // shared logic between both places: build token out of place
      return token;
   }
   protected abstract P createPlace(String id);
}

当然,您也可以Provider<P>在令牌生成器中注入某种形式,而不是对其进行子类化以覆盖其createPlace方法。

您可以将其与一起使用@WithTokenizers,如果生成器找到了两个完全相同的位置或前缀的标记器,则生成器将阻塞。

您应该setFactoryGWT.create()映射器之后立即调用(实际上,重要的是在调用映射器getPlacegetToken方法之前先设置工厂)。



 类似资料:
  • 当我移动时,我试图通过将点之间的距离相加来计算折线的长度。 我想用这个方法: 我可以把location.get纬度()和location.get经度()放在最后 我将所有这些都放在onLocationChanged(位置位置){}中 如何保存上次调用onLocationChanged(location location)时的位置,并将其用作StartAtude/经度。

  • 我意识到这个问题以前被问过很多次,但我现在问这个问题是因为答案很旧(与新的API相比)。 我以前使用过Location Manager,但我发现它非常不可靠。例如,在我的应用程序中,使用getLastKnownLocation和/或current location,它会立即将相机加载到用户的当前位置。但是,如果我在启动应用程序之前打开设备上的位置,它就不会把摄像头放在用户的当前位置,而是放在Nig

  • 现在,我的应用程序的其他功能,我需要与Geofence工作。这个想法是在手机用户靠近商店时显示一个通知,我的第一个方法是编写另一个名为LocationHelperGeofence的LocationHelperGeofence的LocationHelperGeofence的LocationHelper。使用oficial教程,我制作了这门课。工作正常 这两个类都可以工作,但我在每个类中有2个Loca

  • 在我的Azure云帐户中,我可以访问多个订阅,每个订阅中有多个资源组。每个资源组又可以具有跨不同位置的多个功能。 我可以访问给定资源组的函数,如下所示:

  • 下面是一个带有位置的有效载荷的示例: 更新:在furthere检查中,似乎只有当有效载荷中有“attatchments”字段时,验证才会失败。所以如果也失败了,当我发送一张图片或gif或类似的东西。

  • 问题内容: 我有一个这样的测试程序: 它产生以下输出: 我期望(1)和(3)相同,以及(2)和(4)相同。 使用gcc版本:gcc.real(Ubuntu 4.4.1-4ubuntu9)4.4.1 怎么了? 问题答案: 根据C标准 §6.5.7.3 ,按类型大小移动是未定义的行为: 6.5.7按位移位运算符 (…)如果右操作数的值为负或大于 或等于 提升后的左操作数的宽度,则行为未定义。 您的编译