最近在做一个能分析java代码中函数开始和结束,以及取得函数信息(函数所属类名,函数名,函数返回值类型,限定词类型等)的程序。但是对java不是很熟,想知道除了常见的类和函数的构成类型外还有没有其他的类型。
下面是我自己总结的一些类型,不知道还有没有其他的类型。谢谢大虾们指教阿①限定词 class 类名{      
   限定词 static 返回值类型 方法名()
  {       
  }         
} public class test1 {          
  public static void test() {        
    System.out.println("test1");        
}            
} ②限定词 class 类名 extends 父类()class classname extends superclassname   
{   
    type instance-variable1;   
    type instance-variable2;  
     ..............................   
    type instance-variableN;   
 
    type methodname1(parameter-list)   
    {   
        method-body;   
    }   
 
    type methodname2(parameter-list)   
    {   
        method-body;   
    }   
    ................................  
    type methodnameN(parameter-list)   
    {  
        method-body;   
    }   
}  ③接口
限定词 class 类名 implements 接口名{  
} public interface Face {    
  public void smile();    
}    
public class Baz extends Bar implements Face {  
  public void smile( ) {    
    System.out.println("a warm smile");    
  }    
}  
[/code]抽象
abstract class A   
{   
    abstract void callme( ) ;   
    void metoo( )   
    {  
         system.out.println(\"在A的metoo成 员 函 数 里\");   
    }  
 }class B extends A   
{  
    void callme( )   
    {   
        System.out.println(\"在B的callme成 员 函 数 里\");   
    }   
} 静态class Static   
{   
    static int a = 3;   
    static int b;   静态变量  
      
    static void method(int x)  静态成员函数  
    {   
        System.out.println(\"x = \" + x);   
        System.out.println(\"a = \" + a);   
        System.out.println(\"b = \" + b);   
    }   
      
    static   一个静态初始块  
    {   
        System.out.println(\"静 态 初 始 块\");   
        b = a * 4;   
    }   
 
    public static void main(String args[])   
    {   
        method(42);   
    }   
} 下面是一些函数类型 
①成员函数type methodname ( formal-parameter-list )   
{ method-body; }  ②静态成员函数    static void method(int x)  
    {   
        System.out.println(\"x = \" + x);   
        System.out.println(\"a = \" + a);   
        System.out.println(\"b = \" + b);   
    }  ③抛出异常          
限定词 static 返回值类型 方法名() throws 异常类型 [code=Java]
public class test1 {    
  public static void test() throws  
Exception {    
    System.out.println("test1");  
}    
}
还有一些,比较特殊的函数
构造函数(Constructor)  
它具有和它所在的类完全一样的名字。构造函数没有返回类型。  
 
成员函数重载  
名字相同、参数不同的成员函数。 函数前可以加一些修实现至词final不知道还有什么?final  
在缺省情况下,所有的成员函数和实例变量都可以被覆盖。  
如果你希望你的变量或成员函数不再被子类覆盖,可以把它们声明为final。 
除了这些还有什么java的class和函数声明的方式阿,求大家指教阿:)

解决方案 »

  1.   

    楼主,我不清楚你的意图,到底是在java中要获取一个函数的这些信息,还是说要做一个关于java语言的函数词法分析器,如果是前者的话比较简单,用反射可以实现,如果是后者的话,比较麻烦,得自己分析计算出一个函数的有穷自动机,然后在用正则表达式来解析,总之很麻烦...
      

  2.   

    阿门,楼主理解不够全面感觉,修饰方法和CLASS有关键字的,
    你需要去彻底明白这些关键字声明的方法或者类的具体含义
    public protected final
    static 
    楼主总结的精神不错
      

  3.   

    看了书了,怕有遗漏的,关键自己没学过java,怕有遗漏的,就像c的教程里面不会去讲K&R的编程风格一样
    ,怕书上给出的不全阿
      

  4.   


    用C编程去获取java代码的这些类和函数信息已达到不同开发版本中相同函数之间的准确匹配和区分
    倒是不用去复杂的此法分析,只要可以分析出函数的开始结束,以及判断不同版本的两个函数到底是否相同,
    函数要是相同就需要函数所在的类相同,函数名称,返回值,修饰词,函数参数等相同,但是不知道这些因素到底有多少种
      

  5.   

    不能用纯java模式来解决问题吗?怎么还非要用c啊?大概归纳依稀,比较多啊,class的:
    [public|protected|private] [final] [abstract] class ClassName [extends] Father [implements]
    interface的:
    [public|protected|private] [final] interface Name [extends] Father
    方法的:
    [public|protected|private] [final] [abstract|static] [syn] (return type) method(args) [throws exception ] 方括号中标示可选的
      

  6.   

    你说的也不是人家问的。。
    另外LZ,函数在JAVA里叫方法