java如何获取内部静态类变量 5
publicclassA{privateBb;publicBgetB(){returnb;}publicvoidsetB(Bb){this.b=b;}staticclas...
public class A{
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
static class B{
private C c;
public C getC() {
return c;
}
public void setC(C c) {
this.c = c;
}
}
static class C {
private Integer a;
public Integer getA() {
return a;
}
public void setA(Integer a) {
this.a = a;
}
}
}
如何获取C类的变量a 展开
private B b;
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
static class B{
private C c;
public C getC() {
return c;
}
public void setC(C c) {
this.c = c;
}
}
static class C {
private Integer a;
public Integer getA() {
return a;
}
public void setA(Integer a) {
this.a = a;
}
}
}
如何获取C类的变量a 展开
1个回答
2016-01-25 · 知道合伙人互联网行家
关注
展开全部
静态方法不与特定实例关联,不能引用this,要得到当前类名,没有直接的办法。
通过查资料和试验,可以用下面几种方式:
public static void testGetClassName()
{
// 方法1:通过SecurityManager的保护方法getClassContext()
String clazzName = new SecurityManager()
{ public String getClassName()
{
return getClassContext()[1].getName();
}
}.getClassName();
System.out.println(clazzName);
// 方法2:通过Throwable的方法getStackTrace()
String clazzName2 = new Throwable().getStackTrace()[1].getClassName();
System.out.println(clazzName2);
// 方法3:通过分析匿名类名称()
String clazzName3 = new Object() {
public String getClassName()
{
String clazzName = this.getClass().getName();
return clazzName.substring(0, clazzName.lastIndexOf('$'));
}
}.getClassName();
System.out.println(clazzName3);
}
分别调用10万次,
方法1:219ms
方法2:953ms
方法3:31ms
通过查资料和试验,可以用下面几种方式:
public static void testGetClassName()
{
// 方法1:通过SecurityManager的保护方法getClassContext()
String clazzName = new SecurityManager()
{ public String getClassName()
{
return getClassContext()[1].getName();
}
}.getClassName();
System.out.println(clazzName);
// 方法2:通过Throwable的方法getStackTrace()
String clazzName2 = new Throwable().getStackTrace()[1].getClassName();
System.out.println(clazzName2);
// 方法3:通过分析匿名类名称()
String clazzName3 = new Object() {
public String getClassName()
{
String clazzName = this.getClass().getName();
return clazzName.substring(0, clazzName.lastIndexOf('$'));
}
}.getClassName();
System.out.println(clazzName3);
}
分别调用10万次,
方法1:219ms
方法2:953ms
方法3:31ms
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |