Проблема с 'goto' и самым важным аргументом 'goto-меньшего-количества программирования' перемещение, который, если Вы используете его слишком часто Ваш код, хотя это могло бы вести себя правильно, становится нечитабельным, неудобным в сопровождении, непоправимый и т.д. В 99,99% случаев 'goto' приводит к запутанному коду. Лично, я не могу думать ни о каком серьезном основании относительно того, почему я использовал бы 'goto'.
Возможно, для вашего варианта использования имеет смысл передать класс вызывающего объекта в метод, например:
public class A { public void foo(Class<?> c) { ... } }
И назвать его примерно так:
public class B { new A().foo(getClass() /* or: B.class */ ); }
Самый простой способ заключается в следующем:
String className = new Exception().getStackTrace()[1].getClassName();
Но на самом деле в этом не должно быть необходимости, за исключением некоторых целей журналирования, потому что это довольно дорогостоящая задача. Что это, проблема, для которой вы думаете, что это решение? Мы можем придумать гораздо лучшие предложения.
Изменить : вы прокомментировали следующее:
в основном я пытаюсь создать уровень базы данных, а в классе A я создам метод, который будет генерировать sql, такие операторы динамически генерируются путем получения значений всех общедоступных свойств вызывающего класса.
Затем я настоятельно рекомендую поискать существующую библиотеку ORM , такую как Hibernate , iBatis или любая реализация JPA на ваш вкус.
Из трассировки стека: http://www.javaworld.com/javaworld/javatips/jw-javatip124.html
foo () является закрытым, поэтому вызывающий всегда будет в классе A.