zoukankan      html  css  js  c++  java
  • 菜鸡的Java笔记 第三十四 Annotation

    Annotation
            多例模式特点:
                1. 多例类可以有多个实例
                2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例
                
            实际的例子....一副麻将有两颗色子.色子就是多例类,每颗都代表不同的状态...

    public class Dice {  
        private static final Dice dice1 = new Dice();  
        private static final Dice dice2 = new Dice();  
        private static List<Dice> list = new ArrayList<Dice>();//用于放多个实例的list  
        private static final int maxCount = 2;//最多的实例数  
        static{  
            list.add(dice1);  
            list.add(dice2);  
        }  
        private Dice(){}//私有构造方法,避免外部创建实例  
          
        /**
         *  @description: 随机拿取实例
         * /
        public static Dice getInstance(){  
            Random random = new Random();  
            int current = random.nextInt(maxCount);  
            return list.get(current);  
        }  
          
        /**
         *  @description: 指定拿取某一个实例
         */
        public static Dice getInstance(int index){  
            return list.get(index);  
        }  
    }  


    */
    /*    Annotation
            Annotation 可以说是子2005年之后java最大的特色,而且合理的使用 Annotation 可以更加方便程序的编写开发
            也就是说在现在的开发之中, Annotation 的使用频率是非常高的。
            对于程序开发模式经历了三个阶段:
                一:将所有的服务配置信息都写在程序之中,这样一来如果某个服务器的地址发生了改变,那么必须要有开发者去修改程序源代码,并且从一个很庞大项目里面去准确的找到这样的配置路径进行变更
                二:程序 + 配置文件,也就是说将所有需要的配置项写到一个文件里面,程序通过该配置文件进行内容的加载后正常执行程序逻辑,如果要进行一些配置的修改,修改配置文件即可
                三:将一些配置写会到程序之中,因为有些配置有可能需要开发者进行编写,但是用一个特殊的方式将配置部分与程序部分进行分离,这个阶段就是注解阶段( Annotation )
                
            Annotation 也分为两个部分:程序配置的 Annotation 程序编译的 Annotation ,就是指的不同运行范围的 Annotation
            而在JDK里面针对程序结构提供有三个基础的 Annotation : @Override,@Deprecated,@SuppresWarnings
            
        准确的覆写: @Override
            覆写:是发生在继承关系之中的,并且子类定义了与父类相同的方法的时候所产生的概念,但是在进行覆写的时候最简单的做法是将父类中的方法直接拷贝过来使用,但是也有可能出现一些手误的情况
            
            范例:观察覆写可能带来的问题

        package cn.mysterious;
    
        public class Annotation {
    
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(new Member());
            }
        }
        class Member{
            public String tostring(){ // 预备覆写toString
                return "一个神";
            }
        }

               
                那么此时在程序编译的时候是无法确定出此问题的。那么如果想在程序编译的时候就能够把这些错误额覆写检查出来,那么就必须明确的使用一个注解
                

        package cn.mysterious;
    
        public class Annotation {
    
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println(new Member());
            }
        }
        class Member{
            @Override
            public String toString(){ // 预备覆写toString
                return "一个神";
            }
        }

               
                对于这样的注解,最好利用开发工具编写
                
        过期声明: @Deprecated
            如果说你现在一个项目在项目的1.版本开发出了一个类,并且这个类在很长一段时间之内都在使用着,后来某一个项目到达了5.0版本,这个时候发现这个类之中的某些方法已经不再适用了
            此时有两个选择:
                一;直接删除掉这个方法
                二:旧版本继续使用(没问题),新版本做一个提示(不要用有问题)
                
            所谓的过期声明指的是方法可以继续使用,但是会出现有警告信息
            

        package cn.mysterious;
    
        public class Annotation {
    
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                new Member().print();
            }
        }
    
        class Member{
            @Deprecated
            public void print() {
                // TODO Auto-generated method stub
                System.out.println("Member.print()");
            }
        }

               
            在一些进行系统结构设计的时候才会使用到这样的设计方案
            在一些正规的开发公司里面都会有一个严格要求:不允许使用过期方法

        压制警告: @SuppressWarnings
            在一些代码开发过程之中,有可能有一些警告信息是你不关注的

        package cn.mysterious;
    
        public class Annotation {
    
            @SuppressWarnings({ "rawtypes", "unused" })
            public static void main(String[] args) {
                // TODO Auto-generated method stub
                Member mem = new Member();
            }
        }
    
        class Member<T>{
            public void print() {
                
            }
        }

               
                警告信息挺多的,但是从整体来讲没有必要去记这些警告信息

  • 相关阅读:
    5G 时代,云计算迎来新风口
    阿里云VS腾讯云 谁才是中国未来的云计算之王?
    IaaS,PaaS,SaaS 的区别
    财经天下周刊:中国云计算——马化腾的救命稻草 任正非的“下个荣耀”
    HDOJ-1671 Phone List
    【转】Java进阶之路
    Delphi XE2 之 FireMonkey 入门(30)
    Delphi XE2 之 FireMonkey 入门(29)
    Delphi XE2 之 FireMonkey 入门(28)
    Delphi XE2 之 FireMonkey 入门(27)
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/10123590.html
Copyright © 2011-2022 走看看