수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

[JAVA] class info 라는 간단한 util을 만들어 보고 있는데요.

세찬

2023.04.01

자바 초보가 질문드립니다.제가 구글링을 여기 저기 하면서 만들어 보고 있는 것인데요.임의의 .java 파일을 입력해 주면이 파일에 대한 클래스 명은 무엇이고,그 클래스가 가진 멤버 변수라던가, 타입, 메소드.. 등등의 정보를 뽑아 내주는유틸을 만들어 보려고 하는데요.
string split 부분이 아직 시원하게 잘라내질 못하네요.List~~ 부분이라던가...String [] st,문장 맨뒤에 붙는 ; ... 등등이 그것입니다.
OOP 언어라는 JAVA...하지만 아직 제겐 그저 절차지향형으로 밖에는 다가오질 않네요.공부를 더 해야 겠지요. ㅠ
혹시 이런 split 라이브러리 라던가 알고리즘(?) 이 좋은것이 있을까요?선배님의 조언 부탁 드립니다.============import java.awt.Frame;import java.awt.Label;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Scanner;
//Os X//userInput = /Users/dark_hani/Documents/workspace/MyClassName/src/test.java;//windows//userInput = C:\\NovaSoft\\workspace\\testClassInfo\\testClassInfo\\src\\test.java;
// word=phrase.substring(wordIndex, index); 이녀석 알아볼것.
//한파일 분석 끝나면 자동으로 같은 폴더내의 다른 .java를 찾아 분석루틴 돌릴때 필요할 것임.//File file = new File(C:\\); //File[] files = file.listFiles(); //for (int fileInList = 0; fileInList files.length; fileInList++) //{ //System.out.println(files[fileInList].toString()); //}
public class TestClassInfo { static String[] temp; //임시 저장된 라인 배열 static String delimiter = [ ]+;//구분기호 static MapString,String memberMap = new HashMapString, String(); //클래스, int 등 구분한 내용 저장데이터 static ListString mTempTextLine = new ArrayListString(); static ListString mList = new ArrayListString();
public static void main(String[] args) { String className = ; Scanner input = new Scanner( System.in ); String userInput = new String(); System.out.println(command : ); //userInput = input.nextLine(); if (userInput.equals()){ //userInput = C:\\NovaSoft\\workspace\\testClassInfo\\testClassInfo\\src\\test.java; userInput = C:\\NovaSoft\\workspace\\testClassInfo\\testClassInfo\\src\\UsrAction.java; }
File file = new File(userInput);
FileInputStream fis = null; BufferedInputStream bis = null; DataInputStream dis = null;
try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); dis = new DataInputStream(bis);
while (dis.available() != 0) { mTempTextLine.add(dis.readLine()); }
List Stringt = new ArrayListString(); System.out.println(분석중); for (int iP=0;iPmTempTextLine.size();iP++ ){ String[] items = mTempTextLine.get(iP).split(delimiter); //이게 중요하다. for (String item : items){ String tmp = ; tmp = item.repitem.replaceAll(\\s,); // 2차 공란 split if (!item.equals({)){ if (!item.equals(})){ if (!item.equals(*)){ t.add(tmp); System.out.print(.); //System.out.println(sitem = +tmp); //+ [ sPLIT : + item.substring(0) } } } }
}
System.out.print(\n); System.out.println( ================= t 생성완료 ================== ); System.out.println(userInput + 분석줃); int q=0; for (q=1;qt.size();q++){ //클래스관련 if (t.get(q).equals(class)){ className = t.get(q+1); if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+] Type : [+t.get(q-1)+]); } if (t.get(q).equals(implements)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+] interface); } if (t.get(q).equals(extends)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+] class); } if (t.get(q).equals(List)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); }
//기본타입 if (t.get(q).equals(int)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(String) || t.get(q).equals(String[])){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(float)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(double)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(byte)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(short)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(long)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(char)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); } if (t.get(q).equals(boolean)){ if(q t.size()) System.out.println(t.get(q)+\tName : [ +t.get(q+1)+]); }

}
// 멤버 타입별로 보기 System.out.print(String : ); for (q=1;qt.size();q++){ if(t.get(q).equals(String)) System.out.print(t.get(q+1)+ | ); } System.out.print(\nint : ); for (q=1;qt.size();q++){ if(t.get(q).equals(int)) System.out.print(t.get(q+1)+ | ); }
fis.close(); bis.close(); dis.close();
} catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
Frame frame = new Frame(Close Operation Frame); Label lbl = new Label(class : +className,Label.LEFT); frame.add(lbl); frame.setSize(400,400); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent we){ System.exit(0); } }); }
}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
2698712 IF 문 이 계속 오류가 나요 (2) 옆집오빠야 2025-06-19
2698687 이미지를 클릭하면 그 이미지를 다운받게해주는 방법 질문요 ^^ (미해결) (5) 해지개 2025-06-19
2698663 상속하면 자꾸 class 이름이 애러가 나네요 (2) 미련곰탱이 2025-06-19
2698637 마크업 질문요~~ (6) 바르고 2025-06-18
2698551 게시판폭보다 큰 이미지올릴때 어떻게 하시는지요 (9) 에드문드 2025-06-18
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com