我有一个PlayerCharacter类.PlayerCharacter可以扩展(例如,VampirePlayerCharacter vs WerewolfPlayerCharacter)
我有一个特质课.特性可以扩展(例如,代或Gnosis).
PlayerCharacter有一个方法,#withTrait(Trait)它将Trait添加到一个集合中.
PlayerCharacter有一个方法,#applyAllTraits()它循环遍历集合并将它们中的每一个应用于角色.
A VampirePlayerCharacter应该能够被赋予任何Trait适用于a的东西PlayerCharacter,以及任何Trait只适用于a的东西VampirePlayerCharacter.
所以我添加了一个泛型类型 Trait<PC extends PlayerCharacter>
因此,可以BasicTrait<PlayerCharacter>和Generation<VampirePlayerCharacter>
我的难题:
如果PlayerCharacter的特征集合是Collection<Trait<PlayerCharacter>>,则VampirePlayerCharacter无法添加Trait<VampirePlayerCharacter>到集合中.
如果PlayerCharacter是特征集合Collection<Trait<? extends PlayerCharacter>>,那么VampirePlayerCharacter可以添加Trait<VampirePlayerCharacter>到集合中.但是,PlayerCharacter不能再遍历这些特征,因为它们的类型是不确定的(它可能是Trait<PlayerCharacter>一个Trait<VampirePlayerCharacter>或一个Trait<WerewolfPlayerCharacter>或者......)
如果PlayerCharacter是特征集合Collection<Trait<? super PlayerCharacter>>,则VampirePlayerCharacter无法添加Trait<VampirePlayerCharacter>,因为VampirePlayerCharacter不是超类型PlayerCharacter
我觉得更专业的特性只需要在他们的应用方法中使用演员阵容,如果你不恰当地设置它们,他们会爆炸 - 但我确信这不是一个新奇的问题,我的头发宽广.而我无法绕过解决方案.
class PlayerCharacter { …Run Code Online (Sandbox Code Playgroud) 在 AWS 中,我有一个用户池。
该用户池有一个用户。
该用户池有一个 App 客户端,App Client Id 为 MY-CLIENT-ID。
该应用程序客户端已启用为 cognito 用户池的身份提供者,回调 url 为https://MY_APP/redirect_uri,仅在“允许的 OAuth 流”和“电子邮件”和“openid”下选中“授权代码授予”在“允许的 OAuth 范围”下检查。
该用户池的域名为 MY-DOMAIN。
当我导航到
https://MY-DOMAIN.auth.us-east-1.amazoncognito.com/login?
response_type=code&
client_id=MY-CLIENT-ID&
redirect_uri=https://MY_APP/redirect_uri
Run Code Online (Sandbox Code Playgroud)
我被重定向到默认的 Cognito 登录屏幕,并且可以成功通过我的用户池用户进行身份验证。身份验证后,我被重定向到
https://MY_APP/redirect_uri?code=AUTHORIZATION_CODE
Run Code Online (Sandbox Code Playgroud)
但是,当我导航(通过浏览器或 curl)到
https://MY-DOMAIN.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=MY-CLIENT-ID&
redirect_uri=https://MY_APP/redirect_uri
Run Code Online (Sandbox Code Playgroud)
我期待的地方
HTTP/1.1 302 Found
Location: https://MY_APP/redirect_uri?code=AUTHORIZATION_CODE
Run Code Online (Sandbox Code Playgroud)
相反,我收到
HTTP/1.1 302 Found
Location: https://MY-DOMAIN.auth.us-east-1.amazoncognito.com/login?
response_type=code&
client_id=MY-CLIENT-ID&
redirect_uri=https://MY_APP/redirect_uri
Run Code Online (Sandbox Code Playgroud)
这(显然)将我重定向到登录页面。
我确定我忽略了一些明显的东西,但无法弄清楚它是什么。
参考:https : //docs.aws.amazon.com/cognito/latest/developerguide/authorization-endpoint.html