相关疑难解决方法(0)

何时在java中使用@Override

可能重复:
您何时使用Java的@Override注释?为什么?

从@Override注释的javadoc:

指示方法声明旨在覆盖超类中的方法声明.如果使用此批注类型注释方法但不覆盖超类方法,则编译器需要生成错误消息.

当我想测试一个类型的特定方法并替换我的测试主题调用的其他方法的行为时,我倾向于在测试中使用@Override注释.我的一位同事坚信,这不是一个有效的用途,但不确定原因.任何人都可以建议为什么要避免它?

我在下面添加了一个示例来说明我的用法.

对于测试对象Foo:

public class Foo {
    /**
     * params set elsewhere
     */
    private Map<String, String> params;

    public String doExecute(Map<String, String> params) {
        // TODO Auto-generated method stub
        return null;
    }

    public String execute() {
        return doExecute(params);
    }
}
Run Code Online (Sandbox Code Playgroud)

我会定义一个这样的测试:

public void testDoExecute() {
    final Map<String, String> expectedParams = new HashMap<String, String>();
    final String expectedResult= "expectedResult";
    Foo foo = new Foo() {
        @Override
        public String doExecute(Map<String, String> params) {
            assertEquals(expectedParams, params);
            return expectedResult;
        }
    };

    assertEquals(expectedResult, …
Run Code Online (Sandbox Code Playgroud)

java unit-testing annotations

1
推荐指数
1
解决办法
5654
查看次数

成员未在子类中初始化

//src/com/test/animal/Animal.java
package com.test.animal;

public class Animal
{
    Animal()
    {
        init();
    }

    public void init()
    {
        System.out.println("parent init()");
    }
}

//src/com/test/animal/Dog.java 
package com.test.animal;

public class Dog extends Animal
{
    String name = null;

    Dog()
    {
        super();
    }

    public void init()
    {
        System.out.println("child init()");
        super.init();
        name = new String("dog");
        System.out.println("name: "+name);
    }

    public static void main(String[] args)
    {
        Dog d = new Dog();
        System.out.println("name: "+d.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

child init()
parent init()
name: dog
name: null
Run Code Online (Sandbox Code Playgroud)

似乎调用了子中的init(),但是没有保存NAME值!为什么?如果我将NAME移动到父级,那就没关系.然而,保留在孩子身上更合理,因为它是特定于狗的.

另外,我可以在child的构造函数中显式调用init()来解决这个问题.这不是那么好.

java

1
推荐指数
1
解决办法
96
查看次数

与@override java有什么区别吗?

假设我在runnable中有这个方法.我总是删除@override.但我想知道这是否有任何负面影响?我试图搜索但没有找到任何东西.

@Override
public void run() {
    while (running) {

    }
}
Run Code Online (Sandbox Code Playgroud)

java android

1
推荐指数
1
解决办法
1771
查看次数

不添加"@Override"的后果是什么?

基于这个深受喜爱的问题我理解@Override注释是一个很好的编码实践,所以我们知道我们实际上是覆盖了正确的方法.但是,除了编码练习之外,没有做到这一点的后果是什么?Java中是否存在需要注释的基础内容?

我问,因为我正在使用XJC从XSD文件生成Java ActiveMQ消息文件.但是,为了在不进行手工编辑的情况下添加"@Override",我需要使用XJC提供的单独插件,在我的情况下,了解依赖项非常困难.主要目标是使用XJC和我的Ant build.xml在构建时重新生成Java消息文件,而无需任何手动编辑.

java overriding jaxb parent-child

1
推荐指数
1
解决办法
60
查看次数

有没有办法禁止子类在java中调用超类的公共方法?

有没有办法禁止子类在java中调用超类的公共方法?

例如

public abstract class TObject{
    abstract public void quark();
}


public class Animal extends TObject{

       public void quark(){
           System.out.println("this is the animal");
       }

}

public class Dog extends Animal{
       @overide
       public void quark(){
           System.out.println("this is the animal");
           **super.quark();**
       }
} 

In this example, The Dog call the **super.quark();** in it's quark method.
Run Code Online (Sandbox Code Playgroud)

但我不希望狗可以打电话给super.quark(); 我也不想改变

动物到私人夸克方法的修饰语.有没有办法在编译中防止这种情况?

我有几天困惑,谁能帮助我........

我这样做的原因是我在开发hudson scm插件时遇到了类似的问题.I

创建了扩展SubversionSCM(官方类)的类.我只是想

覆盖超类的公共方法,然后调用super的公共方法

例.但编译给出了错误.我不知道为什么,怎么办?剂量java有

反映方式 s,以防止这种情况?

java

0
推荐指数
1
解决办法
588
查看次数

Android服务不起作用

我尝试做一个简单的服务.这是学习如何创建服务.在我的代码中,当我点击开始按钮然后它确实向我显示说服务开始的吐司,但当我点击停止按钮然后它没有显示我的吐司说服务停止.我的logcat中也没有出现任何错误.这是我的代码

package com.zafar.batterynotify;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class BatteryNotify extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button startButton = (Button) findViewById(R.id.start);
    Button stopButton = (Button) findViewById(R.id.stop);

    startButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            startService(new Intent(getBaseContext(), BatteryService.class));
        }
    });

    stopButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            stopService(new …
Run Code Online (Sandbox Code Playgroud)

java android

0
推荐指数
1
解决办法
354
查看次数

onPause() 和 onStop() 不起作用

public class PhrasesActivity extends AppCompatActivity {
    MediaPlayer mediaPlayer;
    private MediaPlayer.OnCompletionListener onCompletionListener = new MediaPlayer.OnCompletionListener(){
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            releaseMediaPlayer();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.word_list);

        final ArrayList<Word> words = new ArrayList<Word>();

#some Word elements added
        WordAdapter wordAdapter = new WordAdapter(this, words, R.color.category_phrases);
        ListView listView = (ListView)findViewById(R.id.numberlist);
        listView.setAdapter(wordAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(PhrasesActivity.this, "Demo", Toast.LENGTH_SHORT).show();
                Word word = words.get(i);
                releaseMediaPlayer();
                mediaPlayer = MediaPlayer.create(PhrasesActivity.this, word.getAudioResourceID());
                mediaPlayer.start(); …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask android-activity

0
推荐指数
1
解决办法
2713
查看次数

为什么要重写接口方法?

当扩展抽象类时,我理解为什么你必须重写一些方法。但当涉及到接口时,我不明白为什么必须这样做。如果一个接口的所有方法都必须实现,那么重写它们有什么用呢?

我正在谈论@Override注释。

java overriding interface java-8

0
推荐指数
1
解决办法
2392
查看次数

如何将Object转换为字符串?

我想从列表中取出用户的选择,并将其转换为使用Jbox的字符串.如何将内容转换为字符串,以便我可以使用它?

public class Graph extends JFrame
{
    private String temp;

    public Graph()
    { }
    public void CreateBox(String[] a)
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton jButton1 = new JButton("ok");
        final JList jList1 = new JList(a);
        jButton1.addActionListener(new java.awt.event.ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {
                Object contents = jList1.getSelectedValue();
                //System.out.println(contents);
                setChoise((String)contents);//how can i convert it to string ?
            }
        });
        JButton jButton2 = new JButton("close");
        jButton2.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });    
        frame.add(jList1, "Center");
        frame.add(jButton1,"South");
        frame.add(jButton2,"North");
        frame.setSize(300, …
Run Code Online (Sandbox Code Playgroud)

java jcombobox

-1
推荐指数
1
解决办法
307
查看次数

@override是什么意思?到底是什么我压倒一切?

可能重复:
您何时使用Java的@Override注释?为什么?

我在许多代码中看到了很多@override元素,但我并不完全知道这意味着什么.例如:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么,我不明白我压倒什么.有人可以帮帮我吗?

java android overriding

-3
推荐指数
1
解决办法
696
查看次数