java中有类似于static class的东西吗?

这样的班级是什么意思.静电类的所有方法都需要也是static吗?

反过来说,如果一个类包含所有静态方法,那么这个类也应该是静态的吗?

静电课有什么用处?

推荐答案

Java有nested个静态类,但听起来像是在寻找顶级静态类.Java无法使顶级类成为静态的,但可以像这样模拟静态类:

  • 声明类final-防止类的扩展,因为扩展静态类没有意义
  • 使构造函数private-防止客户端代码实例化,因为实例化静态类没有意义
  • all成为类static的成员和函数——因为类不能被实例化,所以不能调用实例方法或访问实例字段
  • 请注意,编译器不会阻止您声明实例(非静态)成员.只有在try 调用实例成员时,问题才会出现

以上每个建议的简单示例:

public class TestMyStaticClass {
     public static void main(String []args){
        MyStaticClass.setMyStaticMember(5);
        System.out.println("Static value: " + MyStaticClass.getMyStaticMember());
        System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());
        // MyStaticClass x = new MyStaticClass(); // results in compile time error
     }
}

// A top-level Java class mimicking static class behavior
public final class MyStaticClass {
    private MyStaticClass () { // private constructor
        myStaticMember = 1;
    }
    private static int myStaticMember;
    public static void setMyStaticMember(int val) {
        myStaticMember = val;
    }
    public static int getMyStaticMember() {
        return myStaticMember;
    }
    public static int squareMyStaticMember() {
        return myStaticMember * myStaticMember;
    }
}

What good are static classes?静态类的一个很好的用途是在实例化没有意义的地方定义一次性、实用程序和/或库类.一个很好的例子是Math类,它包含一些数学常数,如PI和E,并且只提供数学计算.在这种情况下,需要实例化将是不必要的,而且会令人困惑.参见Math级和source code级.请注意,它是final,其所有成员都是static.如果Java允许声明顶级类,那么数学类实际上是静态的.

Java相关问答推荐

如果它最终将被转换为int类型,为什么我们在Java中需要较小的integer类型?

Java -使用空比较或instanceof?

为什么我的画布没有显示在PFA应用程序中?

Cosmos Change Feed Process Lag远远超过收集中的记录数量

Java 21虚拟线程会解决转向react 式单线程框架的主要原因吗?

如何让JFileChooser(DIRECTORIES_ONLY)从FolderName中的空白开始?

Arrays.hashcode(int[])为不同的元素提供相同的散列

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

每次FXMLLoader调用ApplationConext.getBean(类)时创建@Component的新实例

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

使用While循环打印素数,无法正常工作

X=x*0.90;产生有损转换误差.X*=0.90;不是.为什么?

如何生成指定范围内的11位序列号?

使用for循环时出现堆栈溢出错误,但如果使用if块执行相同的操作,则不会产生错误

为什么相同的数据条码在视觉上看起来不同?

JXBrowser是否支持加载Chrome扩展?

在具有Quarkus Panache的PostgreSQL中将JSON数据存储为JSONB时,会将其存储为转义字符串

为什么Spring要更改Java版本配置以及如何正确设置?

保持标题窗格的箭头可见,即使设置为不可折叠

在数组中查找素数时出现逻辑错误