静态类和单例模式之间存在什么真实(即实际)差异?
两者都可以在没有实例化的情况下调用,两者都只提供一个"实例",它们都不是线程安全的.还有其他区别吗?
我有一个场景,通过登录页面登录后button,每个都会有一个注销activity.
点击后sign-out,我将通过session id已登录用户登出.任何人都可以指导我如何让session id所有人都可以使用activities吗?
任何替代这种情况
具体来说,我正在尝试这段代码:
package hello;
public class Hello {
Clock clock = new Clock();
public static void main(String args[]) {
clock.sayTime();
}
}
Run Code Online (Sandbox Code Playgroud)
但它给出了错误
无法访问静态方法main中的非静态字段
所以我把声明改为clock:
static Clock clock = new Clock();
Run Code Online (Sandbox Code Playgroud)
它奏效了.在声明之前放置该关键字是什么意思?对于该对象可以做什么,它究竟会做什么和/或限制什么?
杰克逊图书馆的ObjectMapper课程似乎是线程安全的.
这是否意味着我应该将我声明ObjectMapper为像这样的静态字段
class Me {
private static final ObjectMapper mapper = new ObjectMapper();
}
Run Code Online (Sandbox Code Playgroud)
而不是像这样的实例级字段?
class Me {
private final ObjectMapper mapper = new ObjectMapper();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个单元测试来测试机器上时区变化的情况,因为它已被错误地设置然后更正.
在测试中,我需要能够在非本地时区创建DateTime对象,以确保运行测试的人员无论身在何处都能成功完成.
从我从DateTime构造函数中可以看到,我可以将TimeZone设置为本地时区,UTC时区或未指定.
如何使用PST等特定时区创建DateTime?
哇,玩!框架有很多静态方法.在我上学的地方,我们被告知永远不会使用任何静力学,但玩!使用它就像没有明天一样.那是不是很好?如果是这样,为什么?
我们(7个人和我)正计划使用Play!涉及Web应用程序的项目框架.我们决定玩Play!因为它看起来很有趣,我们所有人都已经知道Java并且任务很难,所以我们想要专注于实际的任务,而不是学习如何用不同的语言编程.
我们总是说,但是,永远不要用"静在我们开发的任何Java程序,但是当我看着玩!......好吧......大约一半的方法都是静态的.</夸张>
我想,至少,我们可以使用单例对象(通过使用Scala,例如^^)来编程我们的项目,但我非常担心框架本身实际上有多少静态.
那么,我应该关注这个吗?玩的方式!开发人员编程使它成为所有这些静态不会造成问题的?
(例如,这个主题有一个关于为什么要不惜一切代价避免静态成员的咆哮.)
人们普遍认为应该避免严重依赖全球性的东西.不会使用静态类和方法是一回事吗?
静态变量是在程序执行的整个持续时间内分配的,因此堆栈和堆都不方便.那它在哪里?应该有一些装载的地方?
我有一个ConfigInstance包含a password和a的类password_hash.现在我想使用gson序列化对象但排除该password字段.
public class ConfigInstance {
public String database_address;
public int database_port;
public String database_user;
@Expose(serialize = false)
private String database_pass;
public String database_pass_hash;
public String GetPass() { return database_pass; }
public void Encrypt() { /* Creates the hash before serializing*/ }
public void Decrypt() { /* Creates the password after deserializing */}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已经尝试过使用@Expose(serialize = false)但它似乎没有做任何事情.此外,我已经将该字段设置为私有,因为我认为这将"覆盖"@Expose
但运行以下代码:
private void toFile(File file, ConfigInstance map) {
map.Encrypt();
Gson gson = new …Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么静态变量被认为是邪恶的?
我习惯在我的所有程序中广泛使用静态变量,特别是在我使用Android时.我倾向于使用它们,因为有时通过Intents发送10个或更多值会感觉非常麻烦.因此,我只是将它们声明为静态变量,并使用"点"运算符轻松地在其他类中访问它们.使用静态变量的另一个原因是我在整个应用程序中使用Utility类.就像我下面给出的代码一样,可以帮助我在不同的活动中使用变量.
Utility.java
public class Utility {
public static Facebook fb;
public static AsyncFacebookRunner fbAsyncRunner;
public static String[] fbPermissions = {"email", "read_stream", "user_birthday"};
public static final String PREF_UTILITY_FILE_NAME = "PrefUtilityFile";
public static SharedPreferences prefs;
public static Editor editor;
public static String access_token;
public static long expires;
}
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了类似的问题并遇到了这个和这个,但他们似乎没有给出问题的最终答案.在大多数地方,我看到了相互矛盾的观点,因此我感到很困惑.
这是一个很好的编程习惯还是坏的?我应该使用它吗?