Bohr-L Bohr-L
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

刘博

I'm a slow walker, But I never walk backwards.
首页
技术
常见面试题
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据处理与存储类

  • Spring 生态类

  • 缓存问题类

  • 多线程类

  • JVM 类

  • MySQL 类

  • Java 8 + 特性类

    • 使用 Java 8 的优点是什么?
    • 集合与流有何不同?
    • 什么是 Lambda 表达式?
    • 解释 Predicate 和 Consumer 函数式接口
    • peek () 方法在 Java 8 中的作用?
    • 什么是函数式接口?
    • 接口中的静态方法有什么作用?
      • skip (long) 和 limit (long) 的区别?
      • 抽象类和接口的异同?
      • overload 与 override 的区别?
      • HashMap 在 Java 8 中的变化?
      • HashMap、LinkedHashMap、Hashtable、ConcurrentHashMap 的区别?
      • Lambda 参数列表与箭头运算符的作用?
      • sleep () 和 wait () 的区别?
      • throw 与 throws 的区别?
      • final、finally、finalize 的区别?
      • Collection 与 Collections 的区别
      • ArrayList、LinkedList、Vector 的区别?
    • 其他技术类

    • 常见面试题
    • Java 8 + 特性类
    刘博
    2025-12-29
    目录

    接口中的静态方法有什么作用?

    #

    • 归属接口:静态方法属于接口本身,而非实现类;
    • 调用方式:必须通过接口名调用(如InterfaceName.staticMethod()),不能通过实现类对象调用;
    • 访问权限:默认public(可省略),无private(Java 9 + 支持private static方法,用于接口内部复用);
    • 与实现类的关系:实现类无需实现接口的静态方法,也不能重写(重写会编译报错)。

    # 2. 核心作用

    • 提供工具方法:将与接口相关的工具逻辑封装在接口中,避免创建单独的工具类(如Collections工具类的部分方法可迁移到Collection接口);
    • 简化接口使用:用户无需记忆额外工具类,直接通过接口调用相关方法;
    • 接口自包含:接口不仅定义抽象方法(规范),还提供配套工具方法(实现),提升接口的完整性。

    # 示例

    // 定义接口,包含静态工具方法
    interface StringUtils {
        // 静态方法:判断字符串是否为空
        static boolean isEmpty(String s) {
            return s == null || s.trim().length() == 0;
        }
        
        // 抽象方法(接口规范)
        String process(String s);
    }
    
    // 实现类
    class UpperCaseProcessor implements StringUtils {
        @Override
        public String process(String s) {
            return s.toUpperCase();
        }
    }
    
    // 调用
    public class Test {
        public static void main(String[] args) {
            // 调用接口静态方法(通过接口名)
            System.out.println(StringUtils.isEmpty("")); // true
            
            // 实现类对象不能调用静态方法(编译报错)
            UpperCaseProcessor processor = new UpperCaseProcessor();
            // processor.isEmpty("test"); // 错误
            
            // 调用实现类的抽象方法
            System.out.println(processor.process("hello")); // HELLO
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33

    #


    上次更新: 12/30/2025
    什么是函数式接口?
    skip (long) 和 limit (long) 的区别?

    ← 什么是函数式接口? skip (long) 和 limit (long) 的区别?→

    最近更新
    01
    CPU 使用率较高排查和解决
    12-29
    02
    JVM OOM 问题如何排查和解决
    12-29
    03
    接口防刷怎么实现?
    12-29
    更多文章>
    Theme by Vdoing | Copyright © 2025-2026 Bohr-L's note
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式