作为一个免责声明,我读过为什么静态方法不能在Java中抽象化,即使我恭敬地不同意关于"逻辑矛盾"的公认答案,我也不希望任何答案static abstract
只是答案的用处我的问题;)
我有一个类层次结构,表示数据库中的一些表.每个类都继承了一个类,Entity
该类包含许多用于访问数据库,创建查询,转义字符等的实用方法.
类的每个实例都是数据库中的一行.
现在,为了尽可能多地分解代码,我想添加有关每个类的相关列和表名的信息.这些信息必须在没有类实例的情况下可访问,并将用于Entity
构建查询等.
存储这些数据的显而易见的方法是每个类中的静态方法返回的静态字段.问题是你不能强制类实现这些静态方法,你不能在Java中调用静态方法调用动态链接.
HashMap
或任何类似的数据结构来保存信息.问题:如果缺少信息,则错误将在运行时而不是编译时.你将如何应对abstract static
抽象方法的缺失和动态链接?
在完美的世界中,如果缺少类的信息并且可以通过使用Entity类轻松访问数据,则给定的解决方案应该生成编译错误.
答案不需要在Java中,C#也可以,如果没有任何语言的特定代码,如何做到这一点的任何见解将受到欢迎.
需要明确的是,除了简单之外,我没有任何要求.没有什么必须是静态的.我只想从中检索表和列名Entity
来构建查询.
class Entity {
public static function afunction(Class clazz) { // this parameter is an option
// here I need to have access to table name of any children of Entity
}
}
class A extends Entity {
static String table = "a";
}
class B extends Entity { …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建我的第一个Jekyll网站,我遇到了设计i18n部分的问题.
对于每种语言,不同的文章将被完全重写,因此每篇文章都是不同的帖子,这里没有问题.我的布局/包含中的文本实际上有更多困难.
通常,对于菜单,我正在考虑按照以下方式做一些事情:
{% capture menu_location %}menu.{{ lang }}.html{% endcapture %}
{% include menu_location %}
Run Code Online (Sandbox Code Playgroud)
建议喜欢这里.但这给了我以下错误:
在_includes目录中找不到包含的文件'menu_location'
是否可以为include标记使用变量?你知道我怎么能这样做吗?
谢谢 !
PS:即使我目前只考虑3种语言,我也不会用if/elseif/else语法来做;)
我是Mercurial的新手并试图将测试文件推送到在线存储库.abort: repository default-push not found!
当我尝试使用hg push
命令时,我遇到了一条错误消息.我在网上搜索了大部分提到的答案来配置.hg/hgrc文件.我已经完成了并检查了我的.hg/hgrc文件.它确实有一些东西
[paths]
default = https://ALab@bitbucket.org/Alab/analysis
[web]
cacerts = /etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
为了澄清我的问题,这里是我执行的几个步骤和我得到的错误消息.我的机器是安装了默认Python 2.4.3的RedHat Linux 5服务器.我已经为Mercurial建立了一个目录,/home/Cassie/CassieDir/analysis
并在bitbucket.org上建立了一个存储库,用户名ALab进行分析.我有输入commit
命令和其他hg status
命令.他们都好看.然后,我首先创建了一个名为README的虚拟文件,并尝试将其推送到/analysis
目录
hg push
Run Code Online (Sandbox Code Playgroud)
错误消息显示:
abort: certificate checking requires Python 2.6
Run Code Online (Sandbox Code Playgroud)
然后,为了避免证书错误,我然后键入
hg push --insecure
Run Code Online (Sandbox Code Playgroud)
错误消息显示为
Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
Not trusting file /home/Cassie/CassieDir/analysis/.hg/hgrc from untrusted user Cassie, group Cassie
abort: repository default-push not found! …
Run Code Online (Sandbox Code Playgroud) 就我所知,Gitlab-CI完美地运作.它运行并尽一切可能,但gitlab本身并没有显示状态.
我一直看到的是"检查x的CI状态",旋转器静止不动.
我得到的唯一线索来自gitlab production.log,当我打开页面时:
OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
app/models/project_services/gitlab_ci_service.rb:39:in `commit_status'
app/controllers/projects/merge_requests_controller.rb:165:in `ci_status'
app/controllers/application_controller.rb:57:in `set_current_user_for_thread'
Run Code Online (Sandbox Code Playgroud)
这至少可以说是奇怪的.其他一切都很好,所以整个gitlab看起来并不全面.
Gitlab详细信息:
GitLab 6.6.4
GitLab Shell 1.8.4
GitLab API v3
Ruby 1.9.3p194
Rails 4.0.3
GitLab CI 4.3.0 267edb0
Run Code Online (Sandbox Code Playgroud)
我四处搜索,没有发现类似的问题.这令人费解,因为它在gitlab中从6.something升级到6.6.4后停止工作.这不是一个关键部分,但删除了CI服务器的一些简单使用.
我正在解析如下的CVS文件:
"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,,
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,jane@doe.com
Run Code Online (Sandbox Code Playgroud)
问题是当使用这样的脚本时:
file.eachLine{ line ->
items = line.split(",")
println items.length
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
16
18
Run Code Online (Sandbox Code Playgroud)
这让我觉得split函数删除了最终值.我需要它才能拥有所有物品,即使它们是空的.任何的想法?
我阅读了官方的解释,但我仍然不能很好地理解参数。有人可以解释参数 autovacuum_naptime 吗?多谢 !
(注意,我不是在寻找答案git rebase -i
)
在mercurial中,我可以通过将提交导入我的补丁队列来"重新打开"提交:
hg qimport tip
Run Code Online (Sandbox Code Playgroud)
该承诺在这个意义上是"开放",它就像我犯了它之前,我可以恢复,做hg diff
,hg status
等我如何做到这一点的混帐?
(我在网上找到的所有东西都建议git rebase -i
然后选择编辑,但这是不同的,因为提交不是以同样的方式"打开".)
我目前使用Stripe出售我的产品,即定期订阅。我有时会看到重复付款未能完成,但与PayPal不同,Stripe似乎不支持开箱即用的电子邮件通知,以使客户知道他的付款已失败。
因此,我的问题是:
非常感谢你。