证明在接口中的域隐士地是static和final的
首先,我们都明白,Java的接口,默认的域都是static和final的,而方法默认的也是public的,那么怎么确定呢?
对于final,这个比较简单,直接改写该域,如果可以,则不是final修饰,如果不能,则是final修饰。
对于static,其实也是一样,如果可以直接访问,那么则是static修饰的,如果不能,则说明不是static修饰的。
除了上面的方法外,还有一种,使用Java的反射机制。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test
{
interface TestInterface{
int data = 1;
void test();
}
public static void main(String[] args)
{
try{
Class obj = TestInterface.class;
Field field = obj.getField("data");
System.out.println("修饰符:"+Modifier.toString(field.getModifiers()));
Method method = obj.getMethod("test", null);
System.out.println("修饰符:"+Modifier.toString(method.getModifiers()));
}catch(Exception e){
e.printStackTrace();
};
}
}具体就无需解释,运行结果如下:
修饰符:public static final
修饰符:public abstract第二种办法:
final的:
package caofeng;interface t12 { int ONE = 1, TWO = 2;}public class Test4 { public static void main(String args[]) { // t12.ONE--;说明是final域 }}static的:
public class InterfaceDemo implements T12 { public static void main(String[] args) { System.out.println(InterfaceDemo.ONE); }}interface T12 { int ONE = 1, TWO = 2;}
本文通过实例演示如何验证Java接口中的属性默认为static和final。采用两种方法:一是尝试修改属性值来判断是否为final;二是利用Java反射机制获取属性修饰符。
4841

被折叠的 条评论
为什么被折叠?



