JHHK

欢迎来到我的个人网站
行者常至 为者常成

Java 必要基础

目录

Java 的骨架

一、类 和 构造方法

public class User {
    private String name;
    private int age;

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
}

public / private:访问控制

构造函数 = 初始化对象

Getter / Setter 是常态(和 Swift 不一样)

二、接口(非常重要)

public interface UserService {
    User findById(Long id);
}
public class UserServiceImpl implements UserService {
    @Override
    public User findById(Long id) {
        return new User("Tom", 18);
    }
}

Spring 90% 都围绕接口 + 实现

三、泛型 & 集合

List<User> users = new ArrayList<>();
Map<Long, User> userMap = new HashMap<>();
public class Result<T> {
    private int code;
    private T data;
}

四、Optional & Stream(认知即可)

Optional

// 如果findUser()返回非null的User对象,则创建包含该对象的Optional。
// 如果返回null,则创建一个空的Optional对象(Optional.empty())。
Optional<User> user = Optional.ofNullable(findUser());


// ifPresent():是Optional的方法
// 如果Optional中有值(非空),则执行传入的Lambda表达式。
// 如果为空,则什么都不做。
user.ifPresent(
    u -> System.out.println(u.getName())
);

// 传统写法对比
User user = findUser();
if (user != null) {
    System.out.println(user.getName());
}

使用Optional的优点是:
明确表达“值可能不存在”的语义。
避免潜在的NullPointerException。
鼓励函数式编程风格。

Stream(知道这是“链式操作”)

users.stream()
     .filter(u -> u.getAge() > 18)
     .map(User::getName)
     .toList();

Stream 并不是一种数据结构,它不存储数据,而是从数据源(如集合、数组)获取数据并通过流水线(Pipeline)进行计算
有点类似swift中的Combine

注解(重点)

Spring 的“魔法”全靠注解。
注解本质是: “告诉 Spring:这个类是干什么的”

注解 作用
@Component 普通组件
@Service 业务层
@Repository 数据层
@Controller Web 控制层
@RestController Web 控制层 + 返回 JSON
@Autowired 注入依赖
@RestController
public class UserController {

    @Autowired
    private UserService userService;
}

要理解的是:
你没有 new UserService
Spring 帮你创建并管理
Controller 只“用”,不“管生死”


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.