在网上查看一些 java 示例代码时,我遇到了以下语法:
public class WordCount {
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//...
}
}
//...
}
来自 C# 背景,其中静态类不能从另一个类继承,我对 Map
类之后的 extends
关键字有点困惑。扩展静态类是什么意思,它提供了哪些优势?
最佳答案
当应用于类时,静态修饰符在 C# 和 Java 中意味着两种截然不同的东西。 在 C# 中,类上的 static 修饰符强制使该类的所有成员成为静态。因此,在 C# 中:
- 扩展静态类没有意义,因此是不允许的
- static 修饰符可以用在任何类上,而不仅仅是嵌套类。
但是,在 java 中,应用于类的 static 修饰符意味着该类是它所嵌套的类的静态成员,而不是其成员必须是静态的。因此,在 Java 中:
- 允许扩展静态类,因为它的成员不一定是静态的
- static 修饰符只能用在嵌套类上,因为它只能用在类成员上(而且只有嵌套类才能成为类成员)。
关于java - 在 Java 中扩展静态类是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795374/