2014-10-13 3 views
-1

지금은 특정 섹션을 사용자가 수정할 수 있도록 내 앱을 만들려고합니다. 텍스트 파일에 수정 될 수있는 부분을 원하고 응용 프로그램이 해당 텍스트 파일을 코드로 읽고 실행하도록합니다. 어떻게해야합니까?앱에서 텍스트를 자바 코드로 사용 하시겠습니까?

EDIT : 내 앱은 사람들이 내 앱을 기반으로 만든 자바 파일을로드합니다. 누군가가 메인 클래스에서 생성자를 호출하여 앱의 일부를 시작하면 메인 클래스를 덮어 쓰고 다른 사람들의 작업은로드되지 않을 것이라고 생각했습니다. 누군가가 넣을 수 있도록 어떻게 만들 수 있습니까? Example example = new Example(); 을 데이터 파일에 저장하면 작업과 다른 사람을 활성화/비활성화 할 수 있습니까?

편집 2 : 나는 그것에 생성자가있는 클래스가 있습니다. 메인 클래스에서는 생성자를 호출합니다.

Example example = new Example(); 

디 컴파일 된 java 파일에는 생성자를 호출하는 코드가 있어야합니다. 사람들이 내 소프트웨어를 기반으로 물건을 개발할 때 디 컴파일 된 java 파일에 코드를 추가하여 부품을 작동시킵니다. 이것은 기본적으로 메인 클래스에 코드를 추가하는 것과 같습니다.

최종 편집 :이 작업을 중단하고 대신 내 자신의 사용자 정의 클래스 로더를 만들었습니다. 텍스트 파일을 읽고로드 할 클래스의 이름을보고 문자열을 클래스로 변환하고 클래스의 특정 메서드를 찾고 호출합니다. 도와 주셔서 감사합니다!

+0

Java 코드 또는 .class 파일을로드하려고합니까? – Tim

답변

2
더 나은

쉽게은 사용자가 데이터의 동작을 변경하는 데이터 파일을 편집 한 다음 프로그램 사용을 가질 수 있도록합니다. 보다 구체적인 도움을 받으려면보다 구체적인 배경 정보/상황을 게시하십시오.

+0

좋아요, 지금 내 글을 수정하고 있습니다. –

+2

@ Noodly_Doodly : 가장 좋은 해결책은 완전히 다른 접근 방식을 사용하는 것이므로 "이 코드 문제를 어떻게 해결할 수 있습니까?"라는 질문에 [XY 문제] (http://mywiki.wooledge.org/XyProblem)가 될 수 있습니다. . 당신은 여전히 ​​우리에게 당신의 프로그램이하는 일이나 다른 사람들이하는 일에 대한 세부 사항을 말하지 않습니다. –

1

클래스 로더를 사용하여 추가 클래스 파일을로드 한 다음 리플렉션을 사용하여 리플렉션을 사용하여 인스턴스를 만들고 메소드를 호출 할 수 있습니다. (또는 클래스가 애플리케이션에 이미로드 한 인터페이스를 구현하는 경우 리플렉션을 사용하지 않고 해당 인터페이스의 메소드를 직접 호출 할 수 있습니다.) 클래스 로더를 사용하려면 클래스 파일이 필요합니다. 가지고있는 파일이 모두 Java 파일이면 클래스 로더로 파일을로드하기 전에 컴파일러를 사용하여 클래스 파일로 변환해야합니다.

+0

나는 이것을 1+ 이상 주겠다. 이 단계에서 그가 원하는 것을 알기가 어렵습니다. –

+0

@HovercraftFullOfEels : 동의하고 이것이 XY 문제 일 수 있다는 것이 맞습니다. 현재 작성된 게시물이 그보다 넓은 범위를 갖고있는 것 같지만 제안에 대해서는 특정 사전 정의 된 기능을 변경하려는 경우 분명히 취할 접근법입니다. – Tim

+0

@Tim : 사용자가 줄을 추가 할 수 있도록 자바 파일을로드해야합니다. 그러면 응용 프로그램이 자바 파일을 코드로 응용 프로그램에로드합니다. 실제로는 메인 클래스에 실제로 쓰지 않습니다. –

관련 문제