2016-09-17 2 views
0

У меня есть Java-файл a.java, содержащегокак считать переменные и методы в Java

int ab(fg) 
abs 
bcd 
abs 
int x,y; 

и теперь я хочу различать int переменных и int способ и хранить в другом массиве и вывод в качестве переменных: ab и методы: ab, но им путать, как дифференцировать как ..

class ClassDemo { 
    public static void main(String args[]) { 
     BufferedReader br = null; 
     try { 
      String intarray[] = new String[50]; /*declaring array for int */ 
      String line, a, str = null; 
      char str1 = 0;   /*declaring char str1*/ 
      char str2[] = new char[20]; 
      char str3 = 0;   /*declaring char str1*/ 
      char str4[] = new char[20]; 
      br = new BufferedReader(new FileReader("c:/java/a.java")); /*loading file*/ 
      while ((line = br.readLine()) != null) /*reading file*/ { 
       StringTokenizer stringTokenizer = new StringTokenizer(line); /*spliting  the line into string*/ 
       while (stringTokenizer.hasMoreElements()) /*checking more elememts*/ 

       { 
        str = stringTokenizer.nextElement().toString(); 
        if (str.equals("int"))/*compare for int*/ { 

         while (str1 != '(') { 
          str = stringTokenizer.nextElement().toString(); 
          for (int i = 0; i < str.length(); i++) { 
           str1 = str.charAt(i); 
           str2[i] = str1; 
           System.out.println(str2[i]); 
          } 
         } 
         while (str3 != ';') { 
          str = stringTokenizer.nextElement().toString(); 
          for (int i = 0; i < str.length(); i++) { 
           str3 = str.charAt(i); 
           str4[i] = str3; 
           System.out.println(str4[i]); 
          } 
         } 
        } 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null) 
        br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 
} 
+0

пожалуйста, загрузите файл a.java. Трудно понять ваш вопрос, не видя его. –

+1

Можете ли вы отформатировать код. Его даже не стоит редактировать. –

ответ

0

для подсчета Int переменной и Int метод, вам нужно т o понять возможные способы, которыми могут быть объявлены методы и переменные.

как переменные, так и методы могут иметь доступ (закрытый, общедоступный или защищенный), статический, окончательный и скоро.

характеристик, отличающих между Int переменных и методами:

1) Int переменной декларация не будет содержать открытой и закрывающие скобки и всегда будет иметь; например: int num = 0;

Однако вы должны быть осторожны: может быть кронштейн после =. например: int num = getNum();

2) Объявление методов всегда будет содержать открытые и закрывающие скобки и всегда будет иметь значение} или; в конце.

Например:

Случай 1:

int getNum(){ 

} 

Случай 2:

int getNum(); //abstract or interface 

однако могут быть сложные случаи, такие как:

int 
getNum(
) 
    { 

     } //<--- this is a valid function even through there is new line 
1

Отражение в Java позволяет получить информацию ция о классе во время пакета runtime.Reflection имеет несколько класс для методов/полей/интерфейс и т.д. Пример здесь .....

import java.lang.reflect.Method; 
import java.lang.reflect.Field; 
class DummyClass 
{ 
    public int x; 
    public int z; 
    public int meathod1() 
    { return 1; 
    } 
    public int meathod2() 
    { return 2; 
     } 
    public int method3() 
    { return 3; 
    } 
} 

class MainClass 
{ 
    public static void main(String...s) 
    { 
     //Step 1: Getting the object of the class whose Fields/method u want to get. 

    DummyClass obj=new DummyClass(); 

    //Step 2. Getting the Class of the class whose field/method u want to get.You can skip Step 1 if u already have Object the class. 

    Class myClass=obj.getClass(); 

    //Step 3.Class has some multiple inbuilt methods to get the methods and Fields of any class. 

     Method[] methodList=myClass.getDeclaredMethods(); 


    /*Now u have all the Methods you have declared in the class.The length of the methodList is the no of declared methods u have in your class.If u want to get the inherited methods too,then use getMethods() instead of getDeclaredMethods(),but then all your methods must be public then because getMethods() returns only public methods.*/ 
    System.out.println("Total No of Methods : "+methodList.length); 

    //Step 4. Class has some other Inbuild methods that return Fields. 

    Field[] fieldList=myClass.getDeclaredFields(); 
    System.out.println("Total no of Fields : "+fieldList.length); 
    } 
    } 
+0

спасибо, но я не хочу использовать отражение api, я хочу сделать это своим методом – ayushman