当前位置:编程学习 > JAVA >>

new一个类为什么要加上this

还是不明白new一个类出来的时候为什么要加上this,必须的加上吗?加上别的参数不可以吗?

向大家求教:

……

TextView tv = new TextView(this)

…… Android this new --------------------编程问答-------------------- this代表当前对象,要看你的TextView(?)构造方法里面的类型,比如说TextView(Panel p)这个构造方法,this就代表Panel或其子类的类型参数 --------------------编程问答-------------------- 构建TextView类时需要一个当前类对象呗!
无非是一个构造函数嘛! --------------------编程问答-------------------- TextView tv = new TextView(this)
这段代码在哪个类中,this就指向哪个对象,把这个对象传给TextView构造函数,作为构造函数的参数 --------------------编程问答-------------------- new 的时候关键看构造方法的参数 --------------------编程问答-------------------- 把本类对象作为参数传进去 --------------------编程问答-------------------- this代表的是当前对象,换成具体的对象就可以了 --------------------编程问答-------------------- new TextView(this)中的this是指TextView构造器需要接受一个参数,而当前对象正好和这个参数类型一样,所以就可以把当前对象传进去,这个和new TextView("param")是一样的. --------------------编程问答-------------------- TextView类正好有一个构造方法,该方法有一个参数,该参数的类型与你当前这个this的类型相同。 --------------------编程问答-------------------- 请问这种写法的意义何在。。。。 --------------------编程问答-------------------- this对象,并不一定就是当前的对象 .
this要看你是用在什么的环境中,也就是上下文中.
通常this指代的是调用它的对象. --------------------编程问答-------------------- 没明白意思,建议楼主给出完整代码 --------------------编程问答-------------------- this指的是你当前对象,其中这个对象是就近原则,谁离他最近就是指的那个对象,如果你不想用这个this你可以将你要传的对象放进去
--------------------编程问答-------------------- 好好看书,好好读代码。this我刚开始学的时候也是不太明白。 --------------------编程问答-------------------- 当前对象,谁调用,引用谁 --------------------编程问答-------------------- TextView类正好有一个构造方法,该方法有一个参数,该参数的类型与你当前这个this的类型相同。 --------------------编程问答-------------------- 实际上你问得这个问题是为什么构造时需要加 this,这个问题上面的网友已经回答了

我是想说一下 this 这个关键字

在Java中,调用一个方法一般需要通过对象的引用,即 a.function(b);
这里的调用看起来只是传入的一个参数b,实际上还有一个隐式参数被传入,这就是这个对象a的引用
这个隐式参数如何在方法内使用呢?那就是使用this这个关键字。

由此也可以理解为什么类的静态方法中不能使用this关键字,就是因为调用一个类的静态方法的时候,根本就没有传入这个隐式参数。 --------------------编程问答-------------------- TextView tv = new TextView(this)

可以看下TextView这个类的构造方法,构造方法需要一个参数。
构造函数中可定需要一个当前的类对象作为参数,所以你需要一个this的参数。

或者你可以这样试下:
package com.test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class TestUtil {
/**
 * @param args
 */
public static void main(String[] args) {
}

public void run() {
/*
 * 用this和实例化一个当前类的对象作为参数,是一样的
 */
// 用法1
ThreadDemo ThreadDemo = new ThreadDemo(this);
// 用法2
TestUtil testUtil = new TestUtil();
ThreadDemo ThreadDemo1 = new ThreadDemo(testUtil);
}
}



package com.test;

public class ThreadDemo implements Runnable {

private String num;


ThreadDemo(String num) {
this.num = num;
}

ThreadDemo(Object aa) {
}

public void run() {
// TODO Auto-generated method stub
System.out.println(num);
}

}
--------------------编程问答-------------------- 这是因为他构造方法要求传递一个参数.无参的就不用了. --------------------编程问答--------------------
引用 18 楼 zqfddqr 的回复:
这是因为他构造方法要求传递一个参数.无参的就不用了.

+10086
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,