在java中,是否有允许扩展非抽象类的情况?
当存在类层次结构时,它似乎总是表示错误的代码.你同意吗,为什么/为什么不呢?
在下面的代码中,如果我从EditText中删除关键字final,我在第(6)行中遇到错误,我将EditText对象(et)传递给intent ...我必须在这里知道final关键字的重要性...
final EditText et=(EditText)findViewById(R.id.t);
Button b=(Button)findViewById(R.id.b1);
b.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)<br>
{
Intent on=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+et.getText()));
startActivity(on);
}
});
Run Code Online (Sandbox Code Playgroud) 我知道,一旦最终变量赋值给它,就无法更改.但是我对此有几个问题:
当我有一个字段,static final JButton button;在类外面说,然后在main方法中,尝试为它赋值button = new JButton("OK");,我收到错误告诉我删除最终修饰符?但是,由于原始button变量尚未引用对象,因此我可以将其分配一次?
其次,如果我完全删除了引用,button所以我只static final JButton button;在课外,我的IDE声称"空白的最终字段按钮可能尚未初始化." 这是否意味着必须初始化所有最终字段?如果是这样,他们必须在那里初始化然后我似乎无法在以后初始化它.
另外,愚蠢的问题,但我最初的假设是,当最终变量被引用到实例或数据类型时,它不能被分配给其他任何东西是正确的,对吗?
此代码不完整,但用于说明我的观点:
public class FinalVarTester {
static final JButton button;
public static void main(String[] args) {
JFrame frame = new JFrame();
Container container = frame.getContentPane();
container.setLayout(new BorderLayout());
button = new JButton("OK");
container.add(button, BorderLayout.SOUTH);
}
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个变量int x = 1,比如说,我在主线程中声明了一个runnable,并且我想将x传递给runnable的run()方法,那么必须声明它final.为什么?
final int x = 0;//<----must be final...
private class myRun implements Runnable {
@Override
public void run() {
x++;//
}
}
Run Code Online (Sandbox Code Playgroud) 这段代码:
public class Sandbox {
public enum E {
VALUE {
@Override
public String toString() {
return "I'm the value";
}
};
@Override
public String toString() {
return "I'm the enum";
}
}
public static void main(String[] args) {
System.out.println(E.VALUE);
}
}
Run Code Online (Sandbox Code Playgroud)
打印:
我很有价值
但是,这段代码:
public class Sandbox {
public static final class C {
@Override
public String toString() {
return "I'm a C";
}
}
public static void main(String[] args) {
System.out.println(new C() {
@Override
public String toString() { …Run Code Online (Sandbox Code Playgroud) 以下是我试图更改最终变量值的代码.首先它打印"a"然后"ab".那么,如果我们可以改变最终变量的值那么将变量声明为final是什么好处呢?那么最终关键词的用途是什么?请任何人可以帮我这个?????
package test_new;
public class FinalVarValueChange {
public static void main(String[] args){
final StringBuffer s=new StringBuffer("a");
System.out.println("s before appending :"+s);
s.append("b");
System.out.println("s after appending :"+s);
}
}
Run Code Online (Sandbox Code Playgroud) 我试图在我的eclipse工作区中的java.lang包中创建一个自定义类String.最初我怀疑同一个包中的同一个类是无法创建的,但令我惊讶的是我能够在同一个包中创建一个类(String),即java.lang
现在我很困惑
1)为什么有可能和
2)如果允许的话可能是什么原因.
3)如果在Java中允许这种类型的java类创建,将会有什么用处.
我用Java编程.我已经为每个方法添加了注释来解释他们应该做什么(根据作业).我已将我所知道的内容添加到Password.java(我在研究学校提供的javadoc后创建的存根)中.我的问题不是关于几个函数,我知道testWord和setWord中有错误,但我会自己处理.我的问题是关于这一行:
public static final java.lang.String INITIAL;
Run Code Online (Sandbox Code Playgroud)
这条线是由学校提供的,所以我必须假设它是正确的,我无法找到关于常数字段值INITIAL的任何文档,所以如果有人能够提供关于那将是惊人的信息(例如,如何是处理?它存储什么?如果有的话?键入?).我在Eclipse中的这一行上得到了一个错误:
空白的最终字段INITIAL可能尚未初始化
为什么这个错误在这里?提前感谢您的评论.
仅供参考Password.java的代码:
package ss.week1;
public class Password extends java.lang.Object {
// ------------------ Instance variables ----------------
/**
* The standard initial password.
*/
public static final java.lang.String INITIAL;
// ------------------ Constructor ------------------------
/**
* Constructs a Password with the initial word provided in INITIAL.
*/
public Password() {
}
/**
* Tests if a given string is an acceptable password. Not acceptable: A word
* with less than 6 characters or …Run Code Online (Sandbox Code Playgroud) 在 Java 中,可以在类中声明方法以防止子类覆盖它。
例如:
class Foo {
final void bar() {
// some code here.
}
}
Run Code Online (Sandbox Code Playgroud)
Dart中有类似的构造吗?