CacheOnce.java 866 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package thyyxxk.webserver.utils;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import java.util.Objects;
  5. import java.util.function.Function;
  6. /**
  7. * @author Administrator
  8. */
  9. public class CacheOnce<T> {
  10. private final Map<String, Object> map = new HashMap<>();
  11. @SuppressWarnings("unchecked")
  12. T get(String name) {
  13. if (map.containsKey(name)) {
  14. return (T) map.get(name);
  15. }
  16. return null;
  17. }
  18. @SuppressWarnings("unchecked")
  19. T get(String name, Function<String, Object> filter) {
  20. Objects.requireNonNull(filter);
  21. if (map.containsKey(name)) {
  22. return (T) map.get(name);
  23. }
  24. Object object = filter.apply(name);
  25. if (object == null) {
  26. return null;
  27. } else {
  28. map.put(name, object);
  29. return (T) (object);
  30. }
  31. }
  32. }