Read source code is a good way to learn anything!

Read source code is a good way to learn anything!
Experience
To know how dose List.remove(Object) work, I do many test sample. But I still feel not very realizing. Finally, I took a look at souce code, and then I knew everything!
public   boolean  remove(Object o)  {
    
if (o == null{
            
for (int index = 0; index < size; index++)
        
if (elementData[index] == null{
            fastRemove(index);
            
return true;
        }

    }
 else {
        
for (int index = 0; index < size; index++)
        
if (o.equals(elementData[index])) {
            fastRemove(index);
            
return true;
        }

        }

    
return false;
    }
1. List store very object's reference but object's own.
2. remove(Object) will remove the first reference in List which refer to the object
3. If you want to change an object to a new index: back up it--> remove it--> re-add it

Experience
I create a class to handle something annotated by Annotations. But it doesn't work. I found out it is returned false by Class.getMethod().isAnnotationPresent(Todo.class). Finally, I got the reason by reading source code.
public   enum  RetentionPolicy {
    
/**
     * Annotations are to be discarded by the compiler.
     
*/
    SOURCE,

    
/**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     
*/
    CLASS,

    
/**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * 
@see  java.lang.reflect.AnnotatedElement
     
*/
    RUNTIME
}

你可能感兴趣的:(Read source code is a good way to learn anything!)