关于openjdk8中缺少javafx包导致无法使用javafx.util.Pair解决方案

1. Pair的简单介绍:

      Pair是一种<K,V>形式的数据结构.示例代码如下:


import javafx.util.Pair;
 
Pair<Integer, String> pair = new Pair<>(110, "报警电话");
Integer key = pair.getKey();
String value = pair.getValue();

     这里有小伙伴会发现Pair与Map好像很相似,那么他们是不是一样的了,答案是:不是的.

     我们查看一下Pair的源码:

 

public class Pair<K,V> implements Serializable{

    private K key;

   
    public K getKey() { return key; }

   
    private V value;

   
    public V getValue() { return value; }
}

      Pair<K,V>与Map<K,V>的区别:

       首先,我们可以从源码看出,Pair对象可以通过getKey()和getValue()获取对应的key和value值.Pair能直接通过getValue()获得value的值,就说明Pair只能保存一对key value.而Map<K,V>中只能通过获取Key再获取Value.

        第二点,Pair中并没有添加key,value的操作,而Map可以通过put()添加键值对.

2.openjdk8缺少Pair

  openjdk只包含最精简的jdk,它里面不包含javafx,因此缺少Pair.但在部分开发时间较早的项目中,仍会使用,解决方案:

   1.从openjfx官网中下载javafx,值得注意的是openjdk8对应的52版本,openjdk11对应的是54版本.

   2.更换Oraclejdk8,oraclejdk8包含了javafx.

   3.使用hutool里的Pair:

#依赖
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.6</version>
        </dependency>


 4.其他替代方法可参考:Java 中 Pair 类的五种替代方案