关于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 类的五种替代方案