### Question:
VirtualContainer implements Closeable { public <R extends VirtualContainer> R obtainContainer(String name, Function<Path, R> mapper) { if (name == null || name.length() == 0) { throw new IllegalArgumentException("容器名称（name）为空"); } if (mapper == null) { throw new IllegalArgumentException("容器构建对象（mapper）为空"); } VirtualContainer target = dirCache.get(name); if (target == null) { Path p = Paths.get(fullPath, name); R ct = mapper.apply(p); ct.setParent(this); dirCache.put(name, ct); return ct; } else { return (R) target; } } private  VirtualContainer();  VirtualContainer(Path fullDir);  VirtualContainer(Path parent, String dirName); String getContainerName(); String getSysAbsPath(); VirtualContainer putFile(Path file); VirtualContainer putObj(String fileName, Element element); Element getObj(String fileName); Path getFile(String fileName); R obtainContainer(String name, Function<Path, R> mapper); R getContainer(String name, Function<Path, R> mapper); VirtualContainer getParent(); Path getContainerPath(); boolean exit(String fileName); void clean(); void flush(); VirtualContainer flushContainerByName(String name); VirtualContainer flushFileByName(String name); ST_Loc getAbsLoc(); @Override void close();  }### Answer:
@Test void obtainContainer() throws IOException { VirtualContainer pages = vc.obtainContainer("Pages", VirtualContainer::new); Assertions.assertTrue(Files.exists(Paths.get(target, "Pages"))); Path path = Paths.get(target); VirtualContainer vc2 = new VirtualContainer(path); VirtualContainer pages1 = vc2.getContainer("Pages", VirtualContainer::new); Assertions.assertNotNull(pages1); }