diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index 34aa7fc90..988f34d57 100755 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -429,6 +429,18 @@ public class NetUtil { * @since 4.5.17 */ public static LinkedHashSet localAddressList(final Predicate addressPredicate) { + return localAddressList(null, addressPredicate); + } + + /** + * 获取所有满足过滤条件的本地IP地址对象 + * + * @param networkInterfaceFilter 过滤器,null表示不过滤,获取所有网卡 + * @param addressPredicate 过滤器,{@link Predicate#test(Object)}为{@code true}保留,null表示不过滤,获取所有地址 + * @return 过滤后的地址对象列表 + * @since 4.5.17 + */ + public static LinkedHashSet localAddressList(final Predicate networkInterfaceFilter, final Predicate addressPredicate) { final Enumeration networkInterfaces; try { networkInterfaces = NetworkInterface.getNetworkInterfaces(); @@ -444,6 +456,9 @@ public class NetUtil { while (networkInterfaces.hasMoreElements()) { final NetworkInterface networkInterface = networkInterfaces.nextElement(); + if (networkInterfaceFilter != null && false == networkInterfaceFilter.test(networkInterface)) { + continue; + } final Enumeration inetAddresses = networkInterface.getInetAddresses(); while (inetAddresses.hasMoreElements()) { final InetAddress inetAddress = inetAddresses.nextElement();