Java中一个有用的功能是将成员方法声明为final的选项,以便它不能在后代类中重写.成员变量有类似的东西吗?
class Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ }
public String thisVariableMustNotBeHidden;
}
class Child extends Parent {
public final void thisMethodMustRemainAsItIs() { /* ... */ } // Causes an error
public String thisVariableMustNotBeHidden; // Causes no error!
}
Run Code Online (Sandbox Code Playgroud)
编辑:对不起,我应该详细说明这个场景:我在父类中有一个变量,应该由子类更新(因此它不能是私有的).但是,如果子类创建具有相同名称的变量,则会认为它已更新父变量,即使它更新了自己的副本:
class Parent {
protected String myDatabase = null; // Should be updated by children
public void doSomethingWithMyDatabase() { /* ... */ }
}
class GoodChild extends Parent {
public GoodChild() {
myDatabase = "123";
doSomethingWithMyDatabase();
} …Run Code Online (Sandbox Code Playgroud) 我们为两名玩家提供基于网络的游戏,我们通过亚马逊机械土耳其人提供.对于每场比赛,我们需要两个同时进入的球员,或者最多相距1分钟.我们注意到,在我们发布HIT后的最初几分钟,我们得到了很多工作人员,因为HIT位于搜索结果的第一页,但随后随着游戏移动到上一页,速率会下降.因此,为了获得足够的同时工作人员,我们必须删除HIT,并打开一个新的HIT.
有可能,而不是删除一个HIT,并打开一个新的HIT,以某种方式"撞"/"戳"旧的HIT,使它看起来像新的?
在许多广告网站中都可以这样做,在发布广告后,您可以将其添加到广告列表的头部.
我有一个遗留类C1,实现接口I,可能会抛出一些异常.
我想创建一个类C2,也实现接口I,它基于C1的实例,但是捕获所有异常并对它们做一些有用的事情.
目前我的实现看起来像这样:
class C2 implements I {
C1 base;
@Override void func1() {
try {
base.func1();
} catch (Exception e) {
doSomething(e);
}
}
@Override void func2() {
try {
base.func2();
} catch (Exception e) {
doSomething(e);
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
(注意:我也可以使C2扩展C1.这对当前的问题无关紧要).
该接口包含许多函数,因此我必须一次又一次地编写相同的try ... catch块.
有没有办法减少代码重复量?
我刚刚开了一个OpenShift帐户,并完成了本教程:
当我创建应用程序时,我收到以下错误:
erelsgl@erelsgl-H61MLC:~/mynode$ sudo rhc create-app mynode nodejs-0.6
Application Options
-------------------
Namespace: erel
Cartridges: nodejs-0.6
Gear Size: default
Scaling: no
Creating application 'mynode' ... done
Waiting for your DNS name to be available ... done
Cloning into 'mynode'...
Warning: Permanently added the RSA host key for IP address '23.22.156.99' to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: The remote end hung up unexpectedly
Unable to clone your repository. Called Git with: git clone
ssh://522c....@mynode-erel.rhcloud.com/~/git/mynode.git/ "mynode"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WARNING: …Run Code Online (Sandbox Code Playgroud) 在Eclipse中,可以使用"运行配置"设置环境变量,但这仅适用于特定的主程序.
我在同一个项目中有许多不同的主程序,我想在所有项目中设置相同的环境变量.最简单的方法是什么?
我的网站曾经有一个链接,允许用户在 Open ID 2.0 中使用他们的 Google 帐户登录。自 2015 年 4 月 20 日起,这不再有效,因此我正在尝试迁移到 Google 登录。
此页面:https : //developers.google.com/identity/sign-in/web/sign-in#specify_your_apps_client_id
说:
使用 google-signin-client_id 元元素指定您在 Google Developers Console 中为您的应用程序创建的客户端 ID。
我不知道我的客户 ID 是什么。在我的 Google Developers Console 中:https : //console.developers.google.com/project
我只用 GoogleApp 创建了一个非常古老的应用程序,它与我所说的网站完全没有关系。无论如何,我尝试使用其项目 ID,但在单击登录按钮后出现以下错误:
401. That’s an error.
Error: invalid_client
The OAuth client was not found.
Request Details
fetch_basic_profile=true
scope=email profile openid
response_type=permission
redirect_uri=storagerelay://http/localhost?id=auth684995
ss_domain=http://localhost
client_id=imitatorgwt.apps.googleusercontent.com
openid.realm=
That’s all we know.
Run Code Online (Sandbox Code Playgroud)
我到底应该在 google-signin-client_id 元标记中写什么?
我有一个按以下方式使用 asyncio 的服务器:
proc = await asyncio.subprocess.create_subprocess_exec(
command,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.STDOUT)
async for line in proc.stdout:
line = line.decode('utf-8').strip()
print(line)
Run Code Online (Sandbox Code Playgroud)
问题是,如果proc.stdout包含太长的行,我会在for语句行中收到错误:
ValueError: Separator is not found, and chunk exceed the limit
Run Code Online (Sandbox Code Playgroud)
如何检测如此长的线路以提前避免此错误?
在 Java 程序中,我有一个单例类,用于保存整个程序使用的数据库连接。
当程序结束时,如何告诉 Java 关闭连接?
我可以在 main 的末尾放置一个 connection.close() 语句,但是如果程序意外结束,例如,由于未捕获的异常或程序中某处的“退出”调用,则不会执行该语句。无论程序如何结束,我如何告诉 Java 关闭连接?
在Python中,我可以这样做:
assert result==100, "result should be 100"
Run Code Online (Sandbox Code Playgroud)
但这是多余的,因为我必须输入两次条件.
有没有办法让Python在断言失败时自动显示条件?
我们有一本字典d1和一个条件cond.我们希望d1只包含满足条件的值cond.一种方法是:
d1 = {k:v for k,v in d1.items() if cond(v)}
Run Code Online (Sandbox Code Playgroud)
但是,这会创建一个新的字典,如果d1很大,可能会非常低效.
另一种选择是:
for k,v in d1.items():
if not cond(v):
d1.pop(k)
Run Code Online (Sandbox Code Playgroud)
但是,这会在迭代时修改字典,并生成错误:"RuntimeError:字典在迭代期间改变了大小".
Python 3中就地过滤字典的正确方法是什么?