Java中获取类名的三种方式区别
代码示例
package com.hgb.exhibition.ui.index.activity;
import com.hgb.exhibition.R;
import com.hgb.exhibition.ui.base.activity.BaseActivity;
import com.hgb.framework.annotation.inject.cycle.InjectCycle;
import com.hgb.framework.annotation.inject.ui.InjectLayout;
import com.hgb.framework.flux.State;
import com.hgb.framework.util.LogUtil;
/**
* 欢迎页
*/
@InjectLayout(R.layout.activity_index)
public class IndexActivity extends BaseActivity {
//状态
State state;
class Inner {
}
@InjectCycle(InjectCycle.CycleType.CONSTRUCTOR)
void constructor() {
LogUtil.testInfo("IndexActivity.class--getSimpleName------" + IndexActivity.class.getSimpleName());
LogUtil.testInfo("IndexActivity.class--getCanonicalName---" + IndexActivity.class.getCanonicalName());
LogUtil.testInfo("IndexActivity.class--getName------------" + IndexActivity.class.getName());
LogUtil.testInfo("Inner.class----------getSimpleName------" + IndexActivity.Inner.class.getSimpleName());
LogUtil.testInfo("Inner.class----------getCanonicalName---" + IndexActivity.Inner.class.getCanonicalName());
LogUtil.testInfo("Inner.class----------getName------------" + IndexActivity.Inner.class.getName());
}
}
打印结果
TEST_LOG: IndexActivity.class--getSimpleName------IndexActivity
TEST_LOG: IndexActivity.class--getCanonicalName---com.hgb.exhibition.ui.index.activity.IndexActivity
TEST_LOG: IndexActivity.class--getName------------com.hgb.exhibition.ui.index.activity.IndexActivity
TEST_LOG: Inner.class----------getSimpleName------Inner
TEST_LOG: Inner.class----------getCanonicalName---com.hgb.exhibition.ui.index.activity.IndexActivity.Inner
TEST_LOG: Inner.class----------getName------------com.hgb.exhibition.ui.index.activity.IndexActivity$Inner
小结
正常情况下:getSimpleName获取的就是最直接的类名,getCanonicalName和getName获取到的都是包含路径的类名。
内部类有点特殊,getName获取是路径.类名$内部类。