证明在接口中的域隐士地是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
;
}