Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

16
如何更改TabLayout所选选项卡的图标颜色?
我正在将aTabLayout与a配合使用ViewPager,我想知道如何最有效地更改TabLayout中所选标签的图标颜色。 Google的Youtube应用程序是实现此方法的完美参考。在主页上,有四个深灰色的图标。选择特定选项卡后,该选项卡的图标变为白色。 没有任何第三方库,我怎么能达到同样的效果? 选择器显然是一种可能的解决方案。但是在那种情况下,我将不得不同时找到图标的白色和灰色版本,然后在选项卡被选中或取消选中时切换图标。我想知道是否有更有效的方法可以突出显示图标颜色或其他内容。我在任何教程中都找不到。 编辑 我上面直接提到的解决方案要求每个选项卡的图标使用两个可绘制对象。我想知道是否可以通过编程为每个选项卡的图标使用一个drawable来实现。

12
如果不存在,如何在Optional上执行逻辑?
我想使用java8替换以下代码Optional: public Obj getObjectFromDB() { Obj obj = dao.find(); if (obj != null) { obj.setAvailable(true); } else { logger.fatal("Object not available"); } return obj; } 以下伪代码由于没有orElseRun方法而无法使用,但无论如何它说明了我的目的: public Optional<Obj> getObjectFromDB() { Optional<Obj> obj = dao.find(); return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available")); }
81 java  java-8  optional 


10
使用Java泛型迭代枚举值
我试图找到一种在使用泛型时遍历枚举值的方法。不确定如何执行此操作或不确定是否可行。 下面的代码说明了我想做什么。请注意,代码T.values()在以下代码中无效。 public class Filter<T> { private List<T> availableOptions = new ArrayList<T>(); private T selectedOption; public Filter(T selectedOption) { this.selectedOption = selectedOption; for (T option : T.values()) { // INVALID CODE availableOptions.add(option); } } } 这是实例化Filter对象的方法: Filter<TimePeriod> filter = new Filter<TimePeriod>(TimePeriod.ALL); 枚举定义如下: public enum TimePeriod { ALL("All"), FUTURE("Future"), NEXT7DAYS("Next 7 …

12
Java HashMap keySet()迭代顺序是否一致?
我了解从地图的keySet()方法返回的Set不能保证任何特定的顺序。 我的问题是,它可以确保多次迭代的顺序相同吗?例如 Map<K,V> map = getMap(); for( K k : map.keySet() ) { } ... for( K k : map.keySet() ) { } 在上面的代码中,假设映射不修改,将迭代在按键组处于相同的顺序。使用Sun的jdk15,它会以相同的顺序进行迭代,但是在我依赖此行为之前,我想知道所有JDK是否都将执行相同的操作。 编辑 从答案中我看到我不能依靠它。太糟糕了。我希望能够不必建立一些新的Collection来保证我的订购而摆脱困境。我的代码需要进行迭代,执行一些逻辑,然后以相同的顺序再次进行迭代。我只是从keySet创建一个新的ArrayList来保证顺序。

10
如何读取.pem文件以获取私钥和​​公钥
我正在写一小段代码,读取存储在.pem文件中的公共密钥和私有密钥。我正在使用以下命令来生成密钥。 下面的命令生成一对密钥。 $openssl genrsa -out mykey.pem 2048 此命令生成私钥 $openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem \ -out private_key.pem -nocrypt 和此命令来获取公钥。 $ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der 我编写了两种方法,分别读取私钥和公钥。 public PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception { File f = new File(filename); FileInputStream fis = …
81 java  openssl  x509  pem  pkcs#8 

3
如何在Spring MVC中显式获取发布数据?
有没有办法获取帖子数据本身?我知道spring处理将发布数据绑定到java对象。但是,给定两个要处理的字段,如何获得该数据? 例如,假设我的表单有两个字段: <input type="text" name="value1" id="value1"/> <input type="text" name="value2" id="value2"/> 我将如何在控制器中检索这些值?
81 java  spring-mvc 

5
如何在Java 8和Java 9中使用无符号整数?
在Oracle“原始数据类型”页面中,它提到Java 8添加了对无符号int和long的支持: int:默认情况下,int数据类型是32位带符号的二进制补码整数,其最小值为-2 31,最大值为2 31 -1。在Java SE 8和更高版本中,可以使用int数据类型表示无符号的32位整数,其最小值为0,最大值为2 32 -1。使用Integer该类可将int数据类型用作无符号整数。有关更多信息,请参见“数字类”部分。像静态方法compareUnsigned,divideUnsigned等已被添加到Integer类,以支持算术运算的无符号整数。 long:long数据类型是64位二进制补码整数。带符号long的最小值为-2 63,最大值为2 63 -1。在Java SE 8和更高版本中,可以使用long数据类型表示无符号的64位long,其最小值为0,最大值为2 64 -1。当您需要一个比int提供的值宽的值范围时,请使用此数据类型。该Long班还包含方法,如compareUnsigned,divideUnsigned等支持算术运算的无符号long。 但是,我发现没有办法声明无符号的long或integer。例如,以下代码在应该在范围内时(给出的值恰好是2 64 -1)给出了“文字超出范围”的编译器错误消息(我使用的是Java 8 )。 : public class Foo { static long values = 18446744073709551615L; public static void main(String[] args){ System.out.println(values); } } 那么,有什么方法可以声明一个无符号的int或long?
81 java  java-8  unsigned 

2
如何在自定义过滤器中使用Java配置注入AuthenticationManager
我正在使用Spring Security 3.2和Spring 4.0.1 我正在将xml配置转换为Java配置。当我在“过滤器”中添加注释AuthenticationManager时@Autowired,出现异常 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 我已经尝试了注入,AuthenticationManagerFactoryBean但是由于类似的异常也失败了。 这是我正在使用的XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...> <security:authentication-manager id="authenticationManager"> <security:authentication-provider user-service-ref="userDao"> <security:password-encoder ref="passwordEncoder"/> </security:authentication-provider> </security:authentication-manager> <security:http realm="Protected …

3
Intellij Live模板
有什么方法可以在Intellij中使用默认标记值Live templates吗?例如,我有以下实时模板,该模板声明一个私有变量,几乎要为每个类创建一个私有变量: private static final Logger logger = Logger.getLogger($CLASS$.class) 似乎$CLASS$每次使用此实时模板时都无需键入,因为它可以从作用域或文件名中的类派生。我想知道是否可以在实时模板中使用环境定义的令牌作为默认值?


5
通过名称获取课程
如果我的应用程序中有一个名为TestActivity的Activity类,是否可以通过名称来获取其类,如以下示例所示: Class<?> c = getClassByName("TestActivity");
81 java  android  class 


6
如何在Java中将整数转换为float?
我有两个整数x和y。我需要计算x/y,作为结果,我想浮动。例如,作为结果,3/2我希望得到1.5。我认为,最简单的(或唯一的)的方式来做到这一点是转换x和y成float类型。不幸的是,我找不到简单的方法。你能帮我吗?

7
为什么在Java中将Integer与int进行比较会抛出NullPointerException?
观察这种情况令我非常困惑: Integer i = null; String str = null; if (i == null) { //Nothing happens ... } if (str == null) { //Nothing happens } if (i == 0) { //NullPointerException ... } if (str == "0") { //Nothing happens ... } 因此,我认为装箱操作首先执行(即Java尝试从中提取int值null),而比较操作的优先级较低,这就是引发异常的原因。 问题是:为什么要用Java这样实现?为什么装箱优先于比较参考?还是为什么他们没有null在装箱前实施验证? 此刻,当NullPointerException它与包装的基元一起抛出而不是与真实的对象类型一起抛出时,它看起来不一致。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.