2015-11-10 2 views
1

Я новичок в программировании, поэтому давайте посмотрим, могу ли я объяснить это достаточно хорошо.Как создать .txt-файл с именем класса, который вызвал метод?

Я делаю пакет Java. В одном из классов есть метод, который создает файл. Имя этого файла у меня установлено как «file.txt», но я хочу его изменить.

Предположим, что есть пользователь, работающий над новым проектом, и он импортирует библиотечный пакет (тот, над которым я работаю). Я хочу, чтобы файл, созданный для получения имени класса, в котором работает пользователь. Например, если пользователь вызывает его в классе с именем Main, я хочу, чтобы файл назывался main.txt или Main.txt.

Если это недостаточно ясно, пожалуйста, дайте мне знать, я попытаюсь объяснить это лучше.

Благодаря

Edit: Я пытался GetClass() getSimpleName(), но он не работает так же, как я хочу, чтобы это.. Метод находится внутри библиотеки под названием library, а класс называется Main.class, но используется использованием, которое импортировало библиотеку library и работает над классом SuperMario.class. Я хочу, чтобы текстовый файл был вызван SuperMario.txt вместо getClass().getSimpleName(), примененный к моему метод будет называться Main.txt, потому что это имя класса, в котором находится метод. К сожалению, я не могу передать метод как имя параметра. Может ли кто-нибудь подумать об этом?

+0

Возможно, вы сможете изменить принятый ответ [этот вопрос] (http://stackoverflow.com/questions/442747/getting-the-name-of-the-current-executing-method), чтобы заставить его работать для тебя. – resueman

+0

@resueman Спасибо, я пытался поиграть с ним, но мне не повезло. Иногда это происходит над моей головой. – lokilindo

ответ

3

В вашей библиотеке, используйте StackTrace:

public class Called { 

public static void calledMethod() { 
     System.out.println(Thread.currentThread().getStackTrace()[2].getClassName()); 
     // stackTrace 0 is get stack trace. 
     // stack trace 1 is calledMethod 
     // stack trace 2 is the calling method aka main in 
    } 
} 

Результат будет

eu.plop.test.TestClass 

Вам пришлось искать после StackTrace, чтобы увидеть, если вы хотите, чтобы имя файла, имя класса, имя метода .. . а затем какая-то строка работает, чтобы удалить пакет, если он не используется.

+0

Вау, я так благодарен, спасибо. – lokilindo

Смежные вопросы