- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这似乎是一个新问题,但上次我使用 Java 时,该语言没有泛型。我有一个类层次结构(名称更改为尽可能通用):
public abstract class AbstractBase { .... }
public class ConcreateSubA extends AbstractBase { .... }
public class ConcreateSubB extends AbstractBase { .... }
...
public class ConcreateSubZZ9PluralZAlpha extends AbstractBase { .... }
...
我正在尝试清理一些遗留代码,并且有一个地方可以通过泛型将大量重复的重复分解到一个例程中。 (我在考虑泛型,因为当调用这个例程时,它只需要对一个具体类进行操作。)
程序看起来像
public <Thing extends AbstractBase> void someFunc()
{
another_function_call (Thing.concreteSpecialToken);
// could also be
// another_function_call (Thing.concreteSpecialToken());
// if methods are more feasible than fields
// Cannot use
// another_function_call (Thing().concreteSpecialToken());
// because creating instances of these types is a Major Operation[tm]
}
我遗漏了大约无数行,但那是重要的部分:someFunc()
是类型参数(它实际上接受参数,但它们都不是事物,所以没有推论)。最终我需要获取一个特殊的 token ,这是我变得模糊的地方。
标记是每个具体类的巨大的唯一字符串。它们是基于类的,而不是基于实例的。实际 token 值在每个子类中声明为 private static final
字段。
所以我需要使用基类的公共(public)方法/字段来(最终)获得子类的私有(private)静态字段。显然我不能在基类中声明一个 abstract static
方法,因为那没有意义。如果数据是基于实例的,那么这将是微不足道的,在基类中有一个多态的 getter,但子类的东西是静态的。
我觉得我在这里缺少 Java 泛型的一个特性,但我不能使用 Thing.whatever()
除非 whatever
是可能的在抽象基类中声明。我遇到了 Java 的局限性或我缺乏试图弥合差距的专业知识。我所做的一次看起来很有希望的尝试也有大量的代码重复,一直沿着类层次结构向下,一遍又一遍地用完全相同的代码定义抽象方法……这正是泛型应该帮助防止的!
最佳答案
I'm running up against either limitations of Java or my lack of expertise trying to bridge the gap.
这是 Java 的一个限制,尽管在我看来是一个相当合理的限制。基本上,您仍在尝试使用静态成员,就好像它们是多态的一样,这是行不通的 - 泛型在这方面帮不了您。
选项:
Thing
的 Class
,除非您显式传递它Thing
的实例,只需将其设为抽象实例 成员,它在每个实现中恰好返回静态字段的值关于通过通用父类访问的子类中的 Java 静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588620/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
PowerShell Web Access 允许您通过 Web 浏览器运行 PowerShell cmdlet。它显示了一个基于 Web 的控制台窗口。 有没有办法运行 cmdlet 而无需在控制台窗
我尝试在无需用户登录的情况下访问 Sharepoint 文件。 我可以通过以下任一方式获取访问 token 方法一: var client = new RestClient("https://logi
我目前正在尝试通过 Chrome 扩展程序访问 Google 服务。我的理解是,对于 JS 应用程序,Google 首选的身份验证机制是 OAuth。我的应用目前已成功通过 OAuth 向服务进行身份
假设我有纯抽象类 IHandler 和派生自它的类: class IHandler { public: virtual int process_input(char input) = 0; };
我有一个带有 ThymeLeaf 和 Dojo 的 Spring 应用程序,这给我带来了问题。当我从我的 HTML 文件中引用 CSS 文件时,它们在 Firebug 中显示为中止。但是,当我通过在地
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 6 年前。 为什么这不起作用? func
我想将所有流量重定向到 https,只有 robot.txt 应该可以通过 http 访问。 是否可以为 robot.txt 文件创建异常(exception)? 我的 .htaccess 文件: R
我遇到了 LinkedIn OAuth2: "Unable to verify access token" 中描述的相同问题;但是,那里描述的解决方案并不能解决我的问题。 我能够成功请求访问 toke
问题 我有一个暴露给 *:8080 的 Docker 服务容器. 我无法通过 localhost:8080 访问容器. Chrome /curl无限期挂断。 但是如果我使用任何其他本地IP,我就可以访
我正在使用 Google 的 Oauth 2.0 来获取用户的 access_token,但我不知道如何将它与 imaplib 一起使用来访问收件箱。 最佳答案 下面是带有 oauth 2.0 的 I
我正在做 docker 入门指南:https://docs.docker.com/get-started/part3/#recap-and-cheat-sheet-optional docker-co
我正在尝试使用静态 IP 在 AKS 上创建一个 Web 应用程序,自然找到了一个带有 Nginx ingress controller in Azure's documentation 的解决方案。
这是我在名为 foo.js 的文件中的代码。 console.log('module.exports:', module.exports) console.log('module.id:', modu
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用 MGTwitterEngine"将 twitter 集成到我的应用程序中。它在 iOS 4.2 上运行良好。当我尝试从任何 iOS 5 设备访问 twitter 时,我遇到了身份验证 to
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用以下 API 列出我的 Facebook 好友。 https://graph.facebook.com/me/friends?access_token= ??? 我想知道访问 token 过
401 Unauthorized - Show headers - { "error": { "errors": [ { "domain": "global", "reas
我已经将我的 django 应用程序部署到 heroku 并使用 Amazon s3 存储桶存储静态文件,我发现从 s3 存储桶到 heroku 获取数据没有问题。但是,当我测试查看内容存储位置时,除
我是一名优秀的程序员,十分优秀!