@Test public void emptyArgumentsJoin() { assertEquals("", join()); assertEquals("aa", join("aa", null)); assertEquals("aa/bb", join("aa", "", "bb")); }
public static String join(String... paths) { String joined = Stream.of(paths) .filter(p -> p != null && !p.isEmpty()) .collect(Collectors.joining("/")); return normalize(joined); }
PathUtils { public static String join(String... paths) { String joined = Stream.of(paths) .filter(p -> p != null && !p.isEmpty()) .collect(Collectors.joining("/")); return normalize(joined); } }
PathUtils { public static String join(String... paths) { String joined = Stream.of(paths) .filter(p -> p != null && !p.isEmpty()) .collect(Collectors.joining("/")); return normalize(joined); }  }
PathUtils { public static String join(String... paths) { String joined = Stream.of(paths) .filter(p -> p != null && !p.isEmpty()) .collect(Collectors.joining("/")); return normalize(joined); }  static String join(String... paths); static String normalize(String path); static boolean isAbsolute(String path); static String removeLeadingSlash(String path); static String addLeadingSlash(String path); static String addTrailingSlash(String path); }
PathUtils { public static String join(String... paths) { String joined = Stream.of(paths) .filter(p -> p != null && !p.isEmpty()) .collect(Collectors.joining("/")); return normalize(joined); }  static String join(String... paths); static String normalize(String path); static boolean isAbsolute(String path); static String removeLeadingSlash(String path); static String addLeadingSlash(String path); static String addTrailingSlash(String path);  }