저는 자바를 배우며 지난 몇 주 동안 연습을 위해 여러 클래스를 만들었습니다. 내 머리 속에는 내가 만든 모든 클래스의 목록을보고 원하는 클래스를 선택하여 실행할 수있는 클래스를 만드는 것이 좋습니다.자바에서 런타임에 변수에 이름이있는 클래스를 실행하십시오.
의 I 해냈어 방식과 지금까지 내가 갔을 :
- 가 나는
HashMap<Integer,String>
에 SimpleFileVisitor 나의 모든 클래스의 목록을 참조하십시오. - 이 목록에서 사용자는 클래스와 연결된 번호를 입력하여 파일을 선택할 수 있습니다.
- 문자열이 클래스 이름과 함께 반환됩니다.
여기에 문제가 있습니다.
예를 들어 Clock.class
이라는 문자열로 끝납니다. 이걸 실행하고 싶습니다. 방법?
내가 원하는 클래스를 알고 있다고 가정 해 봅시다. 간단하게 사용할 수 있습니다 Clock.main()
여기서 문제는 런타임까지 실행될 클래스를 알 수 없으므로 잃어 버릴 수 있다는 것입니다.
나는 Reflection API를 가지고 놀고있다. Clock.class의 객체를 인스턴스화 할 수 있지만 아무 일도 발생하지 않습니다.
어쩌면 내가 반사를 전혀 사용하지 않아야합니까? 어쩌면 간단한 방법이 있을까요?
이것은 내가 갇혀있는 곳입니다. 누군가가 나를 계몽 할 수 있기를 바랍니다. :)
클래스 경로에 클래스 파일이 있습니까? –
하단의 메모는 부적합합니다. 이 사이트의 사람들은 그러한 메모를 추가 할 필요가 없음을 * 판단합니다. 그것 외에 당신의 질문은 아주 잘 보입니다. 나는'ProcessBuilder'를 사용하여'java'를 실행하고'.class' 파일의 경로를 전달하여 실행하도록 권한다. –
인스턴스화가 가능하다면 필요한 모든 것을 이미 가지고 있습니다. 정적 메서드를 실행하려면 클래스에서 호출합니다. 인스턴스 메소드를 실행하려면 동일하지만 인스턴스에서 수행하십시오. 인터페이스를 구현하는 인스턴스를 사용하고 인터페이스 메소드를 직접 호출하는 것과 같이 약간 다른 접근법을 고려할 수 있습니다. –