草庐IT

expose_used

全部标签

java - 有人不同意 : "using switch is bad OOP style"? 的说法吗

我已经看到它在stackoverflow上的多个线程/评论中编写,使用switch只是糟糕的OOP风格。我个人不同意这一点。在很多情况下,您无法将代码(即方法)添加到要打开的enum类,因为您无法控制它们,可能它们位于第3方jar文件中.在其他情况下,将功能放在枚举本身是一个坏主意,因为它违反了一些关注点分离的考虑,或者它实际上是其他东西的功能以及枚举。最后,开关简洁明了:booleaninvestable;switch(customer.getCategory()){caseSUB_PRIME:caseMID_PRIME:investible=customer.getSavingsA

java - 为什么不推荐使用 "using getString() to get device identifiers"?

我正在尝试将我的设备ID获取到Logcat,但AndroidStudio给了我这个警告。usinggetstringtogetdeviceidentifiersisnotrecommendedStringdeviceID=Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.ANDROID_ID);为什么不推荐? 最佳答案 完整的警告说:Usingthesedeviceidentifiersisnotrecomme

java - 为什么不推荐使用 "using getString() to get device identifiers"?

我正在尝试将我的设备ID获取到Logcat,但AndroidStudio给了我这个警告。usinggetstringtogetdeviceidentifiersisnotrecommendedStringdeviceID=Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.ANDROID_ID);为什么不推荐? 最佳答案 完整的警告说:Usingthesedeviceidentifiersisnotrecomme

java - Java的三元/条件运算符可以(?:) be used to call methods instead of assigning values?

在像http://en.wikipedia.org/wiki/?:这样的页面中三元/条件运算符?:似乎用于条件赋值。我尝试将它用于方法调用,如下所示:(condition)?doThis():doThat();这两种方法都返回void。Java告诉我这不是声明。所以,我猜我不能进行条件方法调用......或者我可以吗? 最佳答案 在这种情况下,可以将三元运算符视为方法。说a?b:c(对于您正在考虑的意图和目的,请参阅lasseespeholt的评论)等效于调用伪代码方法:ternary(a,b,c)ifareturnbelseret

java - Java的三元/条件运算符可以(?:) be used to call methods instead of assigning values?

在像http://en.wikipedia.org/wiki/?:这样的页面中三元/条件运算符?:似乎用于条件赋值。我尝试将它用于方法调用,如下所示:(condition)?doThis():doThat();这两种方法都返回void。Java告诉我这不是声明。所以,我猜我不能进行条件方法调用......或者我可以吗? 最佳答案 在这种情况下,可以将三元运算符视为方法。说a?b:c(对于您正在考虑的意图和目的,请参阅lasseespeholt的评论)等效于调用伪代码方法:ternary(a,b,c)ifareturnbelseret

java - 改造 2.0 抛出 "IllegalArgumentException: @Field parameters can only be used with form encoding"。如何进行正确的 API 查询并修复它?

我的问题是我不知道如何开始使用Retrofit2.0和收到的API-如下所述...首先,我需要用户名、密码、fbID(可选)、gmailID(可选)、twitID(可选)、性别、出生日期、位置(不需要-如果long和lat有值)、经度(可选)、纬度(可选),profileImage(可选)。当所有参数都正确时-接收status=true。如果不是-接收status=false和错误的必需参数(例如邮件已被占用)所以我可以收到status=true或者status=false和最多包含5个参数(用户名、电子邮件、密码、性别、出生日期)的数组。我试过这个API接口(interface):p

java - 改造 2.0 抛出 "IllegalArgumentException: @Field parameters can only be used with form encoding"。如何进行正确的 API 查询并修复它?

我的问题是我不知道如何开始使用Retrofit2.0和收到的API-如下所述...首先,我需要用户名、密码、fbID(可选)、gmailID(可选)、twitID(可选)、性别、出生日期、位置(不需要-如果long和lat有值)、经度(可选)、纬度(可选),profileImage(可选)。当所有参数都正确时-接收status=true。如果不是-接收status=false和错误的必需参数(例如邮件已被占用)所以我可以收到status=true或者status=false和最多包含5个参数(用户名、电子邮件、密码、性别、出生日期)的数组。我试过这个API接口(interface):p

java - Android Asynctask : Use weak reference for context to avoid device rotate screen

在ApressProAndroid4作者说过:[...]contextofcurrentlyrunningactivitywillnolongerbevalidwhenthedeviceisrotated.[...]Oneapproachistouseaweakreferencetotheactivityinsteadofahardreference[...]但作者只是建议这样做,并没有说明它是如何完成的。有谁做过,请举个例子。 最佳答案 在你的AsyncTask的某个地方,你会想要传递你的Activity。然后,您将该引用保存在弱

java - Android Asynctask : Use weak reference for context to avoid device rotate screen

在ApressProAndroid4作者说过:[...]contextofcurrentlyrunningactivitywillnolongerbevalidwhenthedeviceisrotated.[...]Oneapproachistouseaweakreferencetotheactivityinsteadofahardreference[...]但作者只是建议这样做,并没有说明它是如何完成的。有谁做过,请举个例子。 最佳答案 在你的AsyncTask的某个地方,你会想要传递你的Activity。然后,您将该引用保存在弱

java - jar hell : how to use a classloader to replace one jar library version with another at runtime

我对Java还是比较陌生,所以请多多包涵。我的问题是我的Java应用程序依赖于两个库。我们称它们为库1和库2。这两个库都对库3具有相互依赖关系。但是:库1需要库3的版本1。库2需要库3的版本2。这正是JARhell的定义(或至少一个它的变体)。如链接中所述,我无法在同一个类加载器中加载第三个库的两个版本。因此,我一直试图弄清楚是否可以在应用程序中创建一个新的类加载器来解决这个问题。我一直在研究URLClassLoader,但我一直无法弄清楚。这是一个演示该问题的示例应用程序结构。应用程序的Main类(Main.java)尝试实例化Library1和Library2并运行在这些库中定义的