java当前类
A. java中如果是在当前类的方法里new当前类的对象,可以直接new吗解释下机理,谢谢哦
可以直接new的,当你把这样的类new出来并调用方法时,实际产生了该类的两个实例,实例调用另一个实例当然是可以的啊。 但是这样用要多注意,比如写成这样
public class A {
new A().;
public void moon();{}
}
这样就会报错了,这里造成了类的递归定义,会造成栈溢出。
B. java里this除了可以表示当前对象,还可不可以表示一个类
不能,java里的this仅仅指的是当前类的实体(如果是写在内部类的,就是内部类实体)。
总之无论什么时候this本身代表的是实体。
当然你可以通过反射获取到java类,但这与this本身无关。
C. 请问,java如何获得当前类的泛型的实际类型
java不能取得T的类型.
java的generic只在编译期有效, 拉到执行期并没有T的任何记录.
即使用reflect也拿不到, 因为根本就没有.
在C++的generic才能在执行期取得T.
D. 在Java中,this代表当前类的时候,能用它代表的类名代替this吗
this和对象名称调用对象的非静态方法和属性,使用类名调用对象的静态方法和属性
E. java 怎样获得一个类的当前对象
.class获得的是类的class对象,可不是这个类的对象,用class
变量名接收,用这个class对象通过反射机制可以通过newinstence创建出这个类的对象而且只能调用无参数构造器
F. JAVA中this有什么作用
我也来说几句吧,呵呵! 希望用通俗的语言,让你能明白this的作用!
其实this关键字是很容易理解的,下面我举两个例子作对比,可能你就看明白了:
没有使用this的情况:
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int x,int y) //一个返回整形数的方法
{
aa = x;
bb = y;
return aa + bb;
}
}
使用this的情况
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int aa,int bb) //一个返回整形数的方法
{
this.aa = aa;//第一个aa是全局变量的aa,后一个aa是参数aa
this.bb = bb;//第一个bb是全局变量的bb,后一个bb是参数bb
return (this.aa + this.bb);
}
}
结论:
上面的两个类,本质是相同的,而为什么在第类中使用this关键字呢,注意到第类中的方法returnData(int aa,int bb),形式参数分别为aa和bb,刚好和“private int aa,bb;”这里的变量名是一样的,现在问题来了:在returnData的方法体中如何区别形式参数aa和全局变量aa,两 个 bb也是如此?这就是引入this关键字的用处所在了!this.aa表示的是全局变量的aa,而没有加this的aa表示形式参数的aa,bb也是如此!
建议:
在编程中,过多的使用this关键字不是好方法。这从上面也看得出来,相同的变量名加上this关键字过多时,有时会让人分不清哪个是对哪个。这时可以使用以下方法修改,避免使用this关键字:
class A
{
private int aa,bb;//声明两个整形变量
public int returnData(int aa1,int bb1)
{
aa = aa1;//在aa后面加上一数字1加以区分,其他以此类推
bb = bb1;
return aa + bb;
}
}
总结:
可以看出,上面的,,都是一样的,但既避免了使用this关键字,又避免了中x和y 这种参数意思不明确的缺点.所有建议使用一样的方法!
以上是我的个人心得,原创发贴!希望你能看懂,呵呵!献丑了!
G. 如何在java方法中获得当前方法的名称
在java方法中获得当前方法的名称方法:
一、获得当前类名:
Java代码
this.getClass().getName();
newException().getStackTrace()[i].getMethodName();//其中i=0就是当前的类的方法名字;i==1就是调用者的方法
Thread.currentThread().getStackTrace()[1].getMethodName();//具体使用数组的那个元素和JVM的实现有关,我在SUNJDK6下面测试的是第二个元素,具体说明可以查看Thread.getStackTrace方法的javadoc
二、获得当前方法名臣:
JDK1.4
Java代码
JDK1.5之后可用
Java代码