Jok*_*ker 47 java arrays core modifier
据我所知,应该打印以下代码False
,但是当我运行此代码时,它正在打印True
.
来自Java文档:
如果整数参数包含abstract修饰符,则返回true,否则返回false.
public class Test{
public static void main(String[] args) {
System.out.println(Modifier.isAbstract(byte[].class.getModifiers()));
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解这种行为吗?
Era*_*ran 49
所述的的Javadoc INT java.lang.Class.getModifiers()指定了应该为部分改性剂数组类型的(例如,被返回final
改性剂需要是true
与interface
改性剂需要是false
).另一方面,它没有指定数组类型应该是什么abstract
或static
修饰符,这意味着返回true
或false
没有在JDK中记录的决定.因此任何实现都可以选择返回true
或false
.
int java.lang.Class.getModifiers()
返回此类或接口的Java语言修饰符,以整数编码.修饰符由Java虚拟机的常数公众,保护私人的,最终的,静态的,抽象和接口的; 它们应该使用类Modifier的方法进行解码.
如果底层类是数组类,则其public,private和protected修饰符与其组件类型相同.如果此Class表示基本类型或void,则其public修饰符始终为true,其protected和private修饰符始终为false.如果此对象表示数组类,基本类型或void,则其最终修饰符始终为true,其接口修饰符始终为false.其他修饰符的值不是由本规范确定的.
修饰符编码在Java虚拟机规范表4.1中定义.