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 {}
静态块的执行
我稍微修改了你的代码,但看不到任何缺陷。有了这个代码
public class Main {
static {
System.out.println("Static initializer");
}
public static void main(String[] args) {
System.out.println("Main method");
}
}
我得到了预期的输出:
Static initializer
Main method
您可能没有注意到,因为没有抛出异常,但没有数据可供读取。