GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - lokic/java-plus: 在 java8 的基础上提供一些实用的扩展,让java更加好用

BranchesTags
Open more actions menu

Latest commit

 

History

122 Commits
122 Commits

Folders and files

NameName
Last commit message
Last commit date
src
src
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
pom.xml
pom.xml
 
 

Repository files navigation

java-plus

项目简介

在 java8 的基础上提供一些实用的扩展,让java更加好用

使用

  • 添加依赖

    <dependency>
        <groupId>com.github.lokic</groupId>
        <artifactId>java-plus</artifactId>
        <version>${lastest.version}</version>
    </dependency>

    最新版本查询

部分功能介绍

  • 自定义的一些FunctionalInterface:

    • ThrowXxxx :抛出受检异常的FunctionalInterface
    • SneakythrowsXxxx :偷偷抛出受检异常的FunctionalInterface
      • 在函数式编程中,如果调用一些方法是会抛出受检异常的,又希望lambda在碰到异常的情况下直接结束,就需要在lambda中强制try catch,然后转换成非受检异常抛出,这么做多了一层转换甚是繁琐。
      • 使用 SneakyThrowXxxx 的FunctionInterface,可以直接把受检异常变成非受检异常抛出,且不需要任何异常类的重新包装, 这样既不需要定义一个统一非受检异常,也不需要定义很多特殊的非受检异常。需要捕获异常的时候也十分方便,直接try catch受检异常就可以了。在代码中也可以更加方便得使用方法引用,使代码看起来更加简洁和优雅。
    • TupleXxxx :Tuple(元组)相关的FunctionalInterface
    • EntryXxxx :Entry相关的FunctionalInterface
    • FunctionX 、ConsumerX 、PredicateX :定义了多个入参的Function、Consumer、Predicate
  • FunctionalInterface之间的转换:主要查看XxxxFunctional相关的interface

    • EntryFunctional : 转换成Entry相关FunctionalInterface
    • SneakyThrowsFunctional :转换成SneakyThrow相关的FunctionalInterface
    • TupleFunctional :转换成Tuple(元组)相关的FunctionalInterface
  • Lazy:带缓存功能的 Supplier

    • Supplier 每一次执行 Supplier.get() 都会执行一次 Supplier.get() 内的业务逻辑。 如果在一些Supplier.get() 比较耗时的场景,且多次执行 Supplier.get() ,结果相同的情况下, 我们没有必要多次执行,只需要把执行第一次的结果保存下来,之后多次调用直接返回即可,Lazy 就是这个目的设计出来的。
  • Property :在定义枚举类之后,经常需要基于枚举类的某个字段作为key来查询枚举,抽象出这个模块来实现key到枚举的映射和转换逻辑,示例

    • Property1、Property2、Property3 分别用于支持不同数量的值作为key来查询枚举的场景
  • Builder:对POJO提供的通用builder,也可以作为对POJO提供fluent风格的setter

  • Fors:提供类似scala中for-comprehensions的能力(for-loop和yield的语法)

    • Optionals.Fors:对Optional的支持
    • Streams.Fors:对Stream的支持
    • CompletableFutures.Fors:对CompletableFuture的支持
  • Collectors:Collector相关扩展

    • Collectors.Reversed:倒序相关
    • Collectors.Distinct:去重相关
  • Join :一种类似SQL中join的操作,可以把内存中的Stream流像操作数据库中的表一样进行各种join

    Stream<Integer> streamA = Stream.of(1, 2, 3, 4);
    Stream<String> streamB = Stream.of("1", "2", "3");
    
    Join.stream(streamA)
      .leftOuterJoin(streamB, Join.on(a -> String.valueOf(a), b -> b)
      .stream()   // 转成Stream之后是一个多元组的流,可以结合TupleFunctional进行很多便利的操作
      .map(...)

About

在 java8 的基础上提供一些实用的扩展,让java更加好用

Topics

javajava8sql-join

Resources

Readme
Apache-2.0 license
Activity

Stars

0 stars

Watchers

1 watching

Forks

1 fork
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.