为什么类加载时静态块不运行?

问题描述 投票:0回答:1
import java.io.*;
import java.util.*;


public class Locations implements Map<Integer, Location> {
    private static Map<Integer, Location> locations = new LinkedHashMap<Integer, Location>();
    private static Map<Integer, IndexRecord> index = new LinkedHashMap<>();
    private static RandomAccessFile ra;

    static {
        try {
            ra = new RandomAccessFile("locations_rand.dat", "rwd");
            int numLocations = ra.readInt();
            long locationStartPoint = ra.readInt();
            int i=0;
            while(ra.getFilePointer() < locationStartPoint) {
                int locationId = ra.readInt();
                int locationStart = ra.readInt();
                int locationLength = ra.readInt();
                IndexRecord record = new IndexRecord(locationStart, locationLength);
                index.put(locationId, record);
                System.out.println(i++);
            }
        } catch(IOException e) {
            System.out.println("IOException in static initializer: " + e.getMessage());
        }
    }

    public static void main(String[] args) throws IOException {}

静态块的执行

java oop io static abstract
1个回答
0
投票

我稍微修改了你的代码,但看不到任何缺陷。有了这个代码

public class Main {

    static {
        System.out.println("Static initializer");
    }

    public static void main(String[] args) {
        System.out.println("Main method");
    }
}

我得到了预期的输出:

Static initializer
Main method

您可能没有注意到,因为没有抛出异常,但没有数据可供读取。

© www.soinside.com 2019 - 2024. All rights reserved.