Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I want dynamic way to get the package name from any class in java

Tags:

java

I have code like below sample. in that I am telling the class_name to get package name. instead of this method, i need another logic to get the package name withoud telling the class_name directly.

package smk.jsf.bean;

public class test {
public static void main(String[] args) {
    System.out.println(test.class.getPackage().getName());
//Is there any option like "this.class.getPackage().getName();" bz. i don't want use class_name direclty

}

}

Output : smk.jsf.bean

Thanks to everyone. Finally I got solution below

package smk.jsf.bean;

public class test {
public static void main(String[] args) {
String className = new Object(){}.getClass().getPackage().getName();        
System.out.println(className);

}
like image 259
Karthikeyan Sukkoor Avatar asked Dec 05 '25 10:12

Karthikeyan Sukkoor


1 Answers

Not sure it will suit you but try sun.reflect.Reflection.getCallerClass(). This class is present in JDK. It will return a Class instance of method caller. Then just getPackage(). It is really dangerous stuff but it lets you not to use the class name directly. Example usage - create a method String getPackageName() which will get caller class and return package name and call it from main.

Or you can throw any throwable, catch it and parse that throwable's stack trace to get the target package name (really sick way).


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!