文档章节

core-java学习【二】

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 775
阅读 7
收藏 0
package com;   
  
import java.util.*;   
  
public class ArrayListTest   
{   
    public static void main(String[] args)    
    {   
        // fill the staff array list with three Employee objects   
        // 声明和构造一个保存Employee对象的数组列表   
        ArrayList<Employee> staff = new ArrayList<Employee> () ;   
           
        Employee temp1 = new Employee("Eric", "Zhang", 80000, 1989, 3, 14) ;   
        Employee temp2 = new Employee("Huiyi", "Chen", 80000, 1989, 3, 14) ;   
           
        staff.add(new Employee("Carl", "Cracker", 75000, 1987, 12, 15)) ;   
        staff.add(new Employee("Harry", "Hacker", 50000, 1989, 10, 1)) ;   
        staff.add(new Employee("Tony", "Tester", 40000, 1990, 3, 15)) ;   
        staff.add(temp2) ;   
           
        //使用add方法将对象添加到列表的指定位置,而不会覆盖原值,原有值会自动往下移动一格   
        staff.add(0 , temp1) ;   
           
        //使用set方法将对象添加到列表的指定位置,会覆盖原值   
        staff.set(4 , temp2) ;   
           
        // 使用remove方法将指定位置的对象从列表中删除,其后的对象将自动往上移一个同时调整列表大小   
        staff.remove(3) ;   
           
        // 方法 size()返回当前列表中元素的个数   
        System.out.println("\nstaff.size()= " + staff.size() + "\n");   
           
        // raise everyone's salary by 5%   
        for(Employee e : staff)   
            e.raiseSalary(5) ;   
        /* 等同于如下for循环  
         * for (int i = 0; i < staff.size(); i++)  
         *  {  
         *        Employee e = (Employee)staff.get(i) ;  
         *        e.raiseSalary(5);  
         *       }  
         */  
                   
        // print out the information about all Employee objects   
        for(Employee e : staff)   
            System.out.println("Name= " + e.getName()   
                    + " , salary= " + e.getSalary()   
                    +" , hireDay= " + e.getHireDay()) ;   
    }   
}

 

 

package com;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;

public class ReflectionTest 
{
    public static void main(String[] args) 
    {
        // read class name from command-line args or user input
        // 从命令行获取参数  name
        String name ;
        if (args.length > 0)
            name = args[0] ;
        else
        {
            Scanner in = new Scanner (System.in) ;
            System.out.println("Enter class name (e.g.  java.util.Date  ): ") ;
            name = in.next() ;
        }
        
        //异常捕获
        try
        {
            //print class name and superclass name ( if != Object )
            // 利用静态方法forName 获得字符串对应的Class对象,返回与类名name对应的Class对象
            Class cl = Class.forName(name) ;  
            // 取得上面得到的Class对象的超类 名称
            Class supercl = cl.getSuperclass() ; 
            
            // 输出所要查看的类的名称 信息
            System.out.print("     //输出的 class 类信息是: " + name ) ;
            
            //输出name类的超类(继承关系)
            if ( supercl != null && supercl != Object.class)
                System.out.print( "  extends/*继承*/  " + supercl.getName()) ;
            
            System.out.print("\n  {\n");
            
            // 输出类对象的所有构造器
            System.out.println("     //输出类对象的所有构造器:") ;
            printConstructors(cl) ;
            System.out.println() ;
            
            // 输出类对象的所有方法
            System.out.println("     //输出类对象的所有方法:") ;
            printMethods(cl) ;
            System.out.println() ;
            
            // 输出类对象的所有实例域
            System.out.println("     //输出类对象的所有实例域:") ;
            printFields(cl) ;
            System.out.println("  }") ;
            }
        catch(ClassNotFoundException e)
        {
            // 将Throwable对象和栈的轨迹输出到标准错误流
            e.printStackTrace() ;  
        }
        System.exit(0) ;
    }
    
    /*
         prints all constuctors of a class
            打印类对象的构造器
         @param cl a class
     */
    public static void printConstructors(Class cl)
    {
        // 将返回包含Constructor对象的数组
        Constructor[] constructors = cl.getDeclaredConstructors() ;
        
        for ( Constructor c : constructors)
        {
            String name = c.getName() ;
            
            // 得到对应构造器的修饰符
            System.out.print("    " + Modifier.toString(c.getModifiers())) ;
            // 得到对应构造器的名称
            System.out.print("  " + name +"(" ) ;
            
            //print parameter types 打印构造器的参数类型
            Class[] paramTypes = c.getParameterTypes() ;
            for ( int j = 0 ; j < paramTypes.length ; j++ )
            {
                if ( j > 0 )
                    System.out.print(" ,  ") ;
                System.out.print( paramTypes[j].getName()) ;
            }
            System.out.println("); ") ;
        }        
    }
    
    /*
        Prints all methods of a class 
        @param cl  a class
     */
    public static void printMethods(Class cl)
    {
        // 将返回包含Method对象的数组
        Method[] methods = cl.getDeclaredMethods() ;
        
        for (Method m : methods)
        {
            Class retType = m.getReturnType() ;
            String name = m.getName() ;
            
            // print modifiers, return type and method name
            System.out.print("    " + Modifier.toString(m.getModifiers())) ;
            System.out.print("  " + retType.getName() +"  " + name + "(" ) ;
            
            // print parameter types
            Class[] paramTypes = m.getParameterTypes() ;
            for(int j = 0 ; j < paramTypes.length ; j++ )
            {
                if ( j > 0 )
                    System.out.print(" ,  ") ;
                System.out.print( paramTypes[j].getName()) ;
            }
            System.out.println("); ") ;
        }
    }
    
    /*
        Prints all fields of a class
        @param cl a class
     */
    public static void printFields(Class cl)
    {
        // 将返回包含Field对象的数组
        Field[] fields = cl.getDeclaredFields() ;
        
        for ( Field f : fields)
        {
            Class type = f.getType() ;
            String name = f.getName() ;
            System.out.print("    " + Modifier.toString(f.getModifiers())) ;
            System.out.print("  " + type.getName() +"  " + name + "; \n" ) ;
        }
    }

}

 

本文转载自:http://zuoqiang.iteye.com/blog/715525

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
从Java小白到架构师必须要看的书籍,真正的“武林秘籍”!

少年,我看你骨骼精奇,将是未来万中无一的IT精英,很是适合学JAVA。维护世界和平就看你的了,我这里有能让你成为IT精英的办法!还不来看看! 基础类 1、《Thinking in Java》,入门第一位是...

启示录是真的
05/25
0
0
sharding-jdbc源码分析—准备工作

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/7831817c1da8 接下来对sharding-jdbc源码的分析基于tag为源码,根据sharding-jdbc Features深入学习sharding-jdbc的几个主要特性...

飞哥-Javaer
05/03
0
0
如何在 Mac上 安裝 .NET Core 2.1 ?

一、前言 Free. Cross-platform. Open source. A developer platform for building all your apps. --- .net core .NET Core 是 Microsoft 的一个跨平台解決方案,只要在Windows、 macOS 或者......

小智Owner
08/12
0
0
JDK的命令行工具系列 (二) javap、jinfo、jmap

javap: 反编译工具, 可用来查看java编译器生成的字节码 参数摘要: -help 帮助 -l 输出行和变量的表 -public 只输出public方法和域 -protected 只输出public和protected类和成员 -package 只输...

qingshanli
07/16
0
0
Java 成神之路交流群!期待你的加入!

《Java 成神之路》 专注 Java 相关技术,包括 Java Core,Spring Cloud 全家桶,Spring boot,SSM,微服务、数据库、缓存、JVM、Java 并发、分布式。 现在提供两种交流的方式:微信群 和 QQ...

chenssy
前天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 放假前期焦虑症晚期

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Matteo的单曲《Panama》: 《Panama》- Matteo 手机党少年们想听歌,请使劲儿戳(这里) @新垣吉衣OSC :我发现只要去有小朋友...

小小编辑
11分钟前
11
4
wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
43分钟前
1
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
55分钟前
3
0
OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部