相关疑难解决方法(0)

Collectors.toMap中的Java 8 NullPointerException

如果其中一个值为'null' ,Java 8 Collectors.toMap将抛出一个NullPointerException.我不明白这种行为,map可以包含null指针作为值而没有任何问题.有没有一个很好的理由为什么值不能为空Collectors.toMap

另外,是否有一个很好的Java 8方法来修复它,或者我应该恢复到普通的旧循环?

我的问题的一个例子:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


class Answer {
    private int id;

    private Boolean answer;

    Answer() {
    }

    Answer(int id, Boolean answer) {
        this.id = id;
        this.answer = answer;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Boolean getAnswer() {
        return answer;
    }

    public void setAnswer(Boolean answer) {
        this.answer = answer;
    }
}

public class Main …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception java-8 java-stream collectors

292
推荐指数
7
解决办法
7万
查看次数

布尔值,条件运算符和自动装箱

为什么这会抛出 NullPointerException

public static void main(String[] args) throws Exception {
    Boolean b = true ? returnsNull() : false; // NPE on this line.
    System.out.println(b);
}

public static Boolean returnsNull() {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

虽然这不是

public static void main(String[] args) throws Exception {
    Boolean b = true ? null : false;
    System.out.println(b); // null
}
Run Code Online (Sandbox Code Playgroud)

解决办法是更换的方式false通过Boolean.FALSE,以避免null被拆箱到boolean,可呈现是不可能的.但这不是问题.问题是为什么?JLS中是否有任何引用证实了这种行为,尤其是第二种情况?

java autoboxing boolean nullpointerexception conditional-operator

128
推荐指数
3
解决办法
2万
查看次数

Java中的布尔值和布尔值有什么区别?

我想了解Java Booleanboolean类型之间的区别,特别是它们与GWT有关.我知道方法不受支持,但如果可用,我想要更多信息.

java gwt boolean

56
推荐指数
5
解决办法
7万
查看次数

Java性能:true与Boolean.TRUE

哪个在性能和高效内存使用方面更好?

Boolean isItTrue(arg){ 
    return Boolean.TRUE;
}

boolean isItTrue(arg){
    return Boolean.TRUE
}

Boolean isItTrue(arg){
    return true;
}

boolean isItTrue(arg){
    return true;
}
Run Code Online (Sandbox Code Playgroud)

使用基本类型应该更快更容易,但另一方面,当使用对静态对象的引用时,不会创建新值.或者可能是它在编译器级别上进行了优化,true并且false被静态对象的引用所取代以节省内存?

java performance boolean memory-footprint

26
推荐指数
4
解决办法
2万
查看次数

false和Boolean.FALSE有什么区别?

在C++ windows.h FALSE中定义为整数,这对某些特殊逻辑情况有意义,但在Java java.lang.Boolean.FALSE中定义为boolean并赋值为false
public static final Boolean FALSE,我看到有些人使用它.

我的问题:false和之间有性能差异Boolean.FALSE吗?一般为什么人们去Boolean.FALSE

java boolean primitive-types

21
推荐指数
3
解决办法
2万
查看次数

什么时候应该使用布尔而不是布尔值?

我什么时候应该使用布尔而不是布尔值?我的意思是,为什么我要在一个应该包含"true"或"false"的变量中有一个空值.一个自发的答案(对大多数人来说)将是值,如果值未知.即,如果我们不知道该值是真还是假.但是从编程的角度来看,我认为使用布尔可能会破坏代码,因为我们不知道里面是什么.所以,我认为使用原始类型比包装更好.如果我错了,请纠正我.

java

7
推荐指数
3
解决办法
1万
查看次数

原始类型的包装器也是原始类型吗?

我对 Java 中的数据类型感到困惑。我在 Internet 上看到了很多将 Java 中的数据类型表示为树的图像,这让我对过去的想法感到犹豫。这些树的示例如下所示:图 1:Java 数据类型模式。

因此,在另一篇 SO帖子中,Buhake Sindi 指出:

Boolean 是原始类型的包装器

按照之前 Java 中数据类型的树表示,我的问题是:

  1. 原始数据类型的包装器也是原始数据类型吗?例如BooleanIntegerCharacter
  2. 树中的Object数据类型应该在哪里?据我了解,Object是一个内存区域,可以包含 Java 中的任何类型;从原语到程序员创建的类。因此,Object可能包含原始和非原始数据类型。真的吗?

java types

3
推荐指数
1
解决办法
1290
查看次数

使用布尔值或布尔值声明数组

如果我想声明一个布尔数组,我曾经这样做:

boolean[] B = new boolean[n];
Run Code Online (Sandbox Code Playgroud)

数组中的所有元素都是false

为什么不能这样做?

Boolean[] B = new Boolean[n];
Run Code Online (Sandbox Code Playgroud)

我知道boolean是原始类型,而Boolean是它的包装类.为什么它不像你声明ArrayList,在这里你使用包装类而不是原始类?

java arrays boolean

2
推荐指数
2
解决办法
1072
查看次数

Java hibernate 找不到布尔值的验证器

我有一个服务方法,它尝试使用store()休眠方法添加一个对象。get 方法适用于此 DAO 和服务类,而添加不起作用。在控制台中没有错误。

UrlWhiteListDaoImpl urlDao;

MapperFacade mapper;

@Autowired
public UrlWhiteListingServiceImpl(UrlWhiteListDao urlWhiteListDao, MapperFacade mapper, UrlWhiteListDaoImpl urlDao) {
    this.urlDao = urlDao;
    this.urlWhiteListDao = urlWhiteListDao;
    this.mapper = mapper;
}

@Override
public UrlWhiteListDto addUrlWhiteListItem(UrlWhiteListDto urlWhiteListDto) throws Exception {
    String domainUrlToBeAdded = parseUrl(urlWhiteListDto.getDomain());
    if (isDomainExistbyName(domainUrlToBeAdded)) {
        throw new Exception("Already existed domain is tried to be added");
    }
    UrlWhitelist urlModel = mapper.map(urlWhiteListDto,UrlWhitelist.class);
    urlDao.store(urlModel);
    return urlWhiteListDto;
Run Code Online (Sandbox Code Playgroud)

}

我的模型类是:

@Entity
@Table(name = UrlWhitelist.TABLE_NAME)
public class UrlWhitelist implements EntityBean { 

    public static final String TABLE_NAME = …
Run Code Online (Sandbox Code Playgroud)

java validation spring annotations hibernate

2
推荐指数
1
解决办法
6182
查看次数

如何比较Java中的两个布尔值?

我必须比较两个Boolean包装器.结果我想知道他们是否平等.

这就是我想出的:

public static boolean areEqual(final Boolean a, final Boolean b) {
    if (a == b) {
        return true;
    }

    if (a != null && b != null) {
        return a.booleanValue() == b.booleanValue();
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

是否有更好和/或更短的方法来正确比较两个Boolean包装器的相等性?

首先我想使用Object.equals()或者Boolean.compareTo()两种方式最终都可以使用NullPointerException,对吧?也许有些东西我在这里看不到,这就是我要问的原因.

java

-2
推荐指数
1
解决办法
4484
查看次数