13

我只使用一个项目来移植 lite 和完整版本,因为我只是在更新 Manifest 文件包名称。

我的项目结构是这样的

我的应用程序
      |_src
          |_com.example.myapp
                                              |_MyClass.java

我的清单包名称不同。

包="com.example.myapplite"

我正在使用一个库项目,因为我想要在 MyApp 中使用的类的包名称。

我用过这个

        System.out.println("Package Name " + context.getPackageName());

但它给了我一个清单文件包名称值,即。com.example.myapplite

我想要 MyClass.java 包名。IE。com.example.myapp

我也知道这一点

 MyClass mClass = new MyClass();
 Package pack = mClass.getClass().getPackage();

但我不能使用这种方法,因为我正在使用以下方法在我的库项目中获取类文件

Class c = Class.forName("package_name.MyClass");

如何以编程方式获取 MyClass.java 文件的包名?

4

5 回答 5

12

可能会有所帮助

package org.kodejava.example.lang;
import java.util.Date;

public class ObtainingPackageName {
public static void main(String[] args) {
    //
    // Create an instance of Date class, and then obtain the class package
    // name.
    //
    Date date = new Date();
    Package pack = date.getClass().getPackage();
    String packageName = pack.getName();
    System.out.println("Package Name = " + packageName);

    //
    // Create an insatnce of our class and again get its package name
    //
    ObtainingPackageName o = new ObtainingPackageName();
    packageName = o.getClass().getPackage().getName();
    System.out.println("Package Name = " + packageName);
   }
} 
于 2013-02-15T07:06:39.163 回答
3

Kotlin 解决方案:

val packageName = this.javaClass.`package`?.name
于 2019-03-22T23:16:34.183 回答
2
String packageName = this.getClass().getPackage().getName();

肯定会工作。

于 2017-04-09T05:12:55.440 回答
1

尝试这个,

    try {
        Class c = Class.forName("package_name.MyClass");

        Object o = c.newInstance();

        Package p = o.getClass().getPackage();

        System.out.println("Package Name :: " + p.getName());

    } catch (ClassNotFoundException e) {            
        e.printStackTrace();
    } catch (InstantiationException e) {            
        e.printStackTrace();
    } catch (IllegalAccessException e) {            
        e.printStackTrace();
    }
于 2013-02-15T07:19:33.673 回答
1

一些类的简单例子NotificationListener

Timber.d(NotificationListener.class.getPackage().getName());
Timber.d(NotificationListener.class.getSimpleName());
Timber.d(NotificationListener.class.getName());

输出:

D/PermissionsUtil: com.example.receivers
D/PermissionsUtil: NotificationListener
D/PermissionsUtil: com.example.receivers.NotificationListener
于 2017-08-24T14:00:22.877 回答