在论坛上,看到一个问题,当然,各位聪明的客官想必已经知道问题是什么了,嘿嘿,没错就是文章的标题:final修饰的类,其属性和方法默认是被final修饰的吗?

老实说,刚开始看到这个问题的时候,有点懵...(现场捕获懵比一只:),嘻嘻),之前学习的语法什么的,隔了太久忘记了。。。既然忘记了,就写个程序进行测试下吧

嘻嘻,以下是测试的程序:(小程序中用到了反射机制,还没学习到的客官,可以先去了解下哈:) )

/**
 * DateAndTime: 2016-12-13下午10:38:08
 */
package question;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 测试final修饰的类,其属性和方法是不是final的?
 * ------使用String类进行测试------
 * ---------利用反射机制获取属性和方法的修饰符,得到结果
 * @author Administrator
 *
 */
public class Question1 {
    
    public static void reflection(Class clazz) {

        System.out.println("------属性------");
        Field[] fields = clazz.getDeclaredFields();
        for(Field f : fields) {
            int iModifiers = f.getModifiers();
            String sModifiers = Modifier.toString(iModifiers);
            //打印所有属性的修饰符及属性名
            System.out.println(sModifiers+" "+f.getName());
        }
        
        System.out.println("------方法------");
        Method[] methods = clazz.getMethods();
        for(Method m: methods) {
            int iModifiers = m.getModifiers();
            String sModifiers = Modifier.toString(iModifiers);
            //打印所有方法修饰符及方法名
            System.out.println(sModifiers+" "+m.getName());
        }
    }
    
    public static void main(String[] args) {
        reflection(Person.class);
    }
    
}

final class Person {
    
    private String name;
    private String age;
    private final String idCard;
    
    Person(String idCard) {
        this.idCard = idCard;
    }
    
    public static void m(){};
    public void m1(String s){};
    public final void m2(){};
    
}
View Code

相关文章:

  • 2021-08-22
  • 2021-06-03
  • 2021-08-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-08-22
  • 2022-01-12
  • 2021-12-12
相关资源
相似解决方案