相关疑难解决方法(0)

如何将新项添加到String数组中?

可能重复:
如何向String []数组添加新元素?

如何将新项添加到String数组中?我正在尝试将项添加到最初为空的String.示例:

  String a [];

  a.add("kk" );
  a.add("pp");
Run Code Online (Sandbox Code Playgroud)

java arrays

22
推荐指数
4
解决办法
21万
查看次数

使用超类初始化子类对象java

SuperClass object = new SubClass();
Run Code Online (Sandbox Code Playgroud)

为什么使用超类来实例化上面的子类对象?因为我学习实例化对象的唯一方法是:

SubClass object = new SubClass();
Run Code Online (Sandbox Code Playgroud)

我正在学习java.

java

20
推荐指数
3
解决办法
3万
查看次数

Java,使用多个接口声明变量?

在Java中,是否可以声明其类型为多个接口的字段/变量?例如,我需要声明一个Map也是Serializable.我想确保变量引用可序列化的映射.该Map接口不延长Serializable,但大部分Map的实现是Serializable.

我很确定答案是否定的.

后续:我充分意识到创建同时扩展新的界面MapSerializable.这不起作用,因为现有的实现(例如HashMap)不实现我的新接口.

java

19
推荐指数
5
解决办法
6993
查看次数

究竟什么是"基于接口的编程"?

我经常听到/阅读基于接口的编程,但我并不清楚这究竟意味着什么.基于接口的编程是一个真正独立的主题,实际上有关于它的书籍吗?如果是这样,有人可以推荐任何好的吗?

我遇到了基于接口的编程,因为我正在阅读有关如何设计好API并希望了解它的更多信息.现在我不清楚如何正确地设计围绕接口的API.

任何信息都非常感谢.

.net c# design-patterns interface

18
推荐指数
3
解决办法
9707
查看次数

可以将一系列键映射到值的数据结构

我试图找到一个数据结构,从一系列值中获取特定值并将其映射到一个键.

例如,我有以下条件:

  1. 从1到2.9,我想将它映射到A.
  2. 从4到6,我想将它映射到B.
  3. 从6.5到10,我想将它映射到C.

我的值为5,我想将其映射到一个键.所以基于上述条件,我应该将它映射到B.

Java中是否有任何人可以向我推荐解决问题的数据结构?

目前我使用的哈希表只能将值映射到键.我尝试将值范围映射到哈希表中存在的特定值.但是,我陷入了将值范围映射到特定值的问题.所以现在我试图用另一种方法将值的范围映射到键.有谁知道如何解决这个问题?

编辑:

感谢Martin Ellis,我决定使用TreeMap来解决这个问题.

java dictionary data-structures range-map

18
推荐指数
2
解决办法
1万
查看次数

多态性与遗传

假设我有两个类:Animal和Dog.狗是动物的一个子类.我执行以下代码:

Animal a = new Dog();
Run Code Online (Sandbox Code Playgroud)

现在我可以通过一个变量调用Dog类的方法.

但我的问题是:如果我可以通过Dog对象(继承)调用所有Animal的方法而不是为什么我应该使用多态原理?我可以宣布:

Dog d = new Dog();
Run Code Online (Sandbox Code Playgroud)

有了这个声明,可以使用Animal的所有方法和Dog方法.那么为什么要使用多态?非常感谢您的回答.

java polymorphism

18
推荐指数
2
解决办法
2万
查看次数

使用接口有什么好处

假设你有一个界面

public interface Change {

    void updateUser();
    void deleteUser();
    void helpUser();

}
Run Code Online (Sandbox Code Playgroud)

我已经读过接口是Java实现多重继承的方式.您实现了一个接口,然后您可以访问其方法.我不明白的是,这些方法在界面中没有任何主体,所以你需要在你的类中给它们一个主体.因此,如果您的接口由多个类实现,则需要在多个类中为该方法提供一个主体.为什么这比在类中使用单独的方法更好,而不是实现接口?

java interface

18
推荐指数
5
解决办法
4万
查看次数

为什么在Java中使用接口名称声明变量?

这是一个真正的初学者问题(我还在学习Java基础知识).

我可以(有点)理解为什么方法会返回List <String>而不是ArrayList <String>,或者为什么它们会接受List参数而不是ArrayList.如果它对方法没有影响(即,如果不需要ArrayList中的特殊方法),这将使该方法更灵活,更容易用于调用者.其他集合类型也是如此,例如Set或Map.

我不明白的是:通常的做法是创建这样的局部变量:

List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

虽然这种形式不太常见:

ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

这有什么好处?

我只能看到一个小缺点:必须添加java.util.List的单独"import"行.从技术上讲,可以使用"import java.util.*",但我也不经常看到,可能是因为某些IDE自动添加了"import"行.

java variables interface declaration

17
推荐指数
2
解决办法
6045
查看次数

编码到接口?

我想巩固我对"编码到界面"概念的理解.据我所知,一个人创建界面来描述预期的功能,然后在具体的类中实现这些"契约".要使用接口,可以简单地在具体类的实例上调用方法.

显而易见的好处是了解具体类提供的功能,而不管其具体实现如何.

基于以上内容:

  1. 我对"编码到接口"的理解是否有任何谬误?
  2. 编码到我错过的接口有什么好处吗?

谢谢.

java oop

17
推荐指数
3
解决办法
1万
查看次数

向下转换是否会破坏多态性的目的?

我今天在这里找到了一个问题,它为我提出了这个问题.

这是我所得到的伪代码示例:

class Car{
public:
    virtual int goFast() = 0;
};


class FordFocus : public Car {
public:
    int goFast(){
        return 35;
    };
};


class Lamborghini : public Car {
    bool roof;
public:
    int goFast(){
        return -1/0;  // crash 
    };
    void retractTheRoof(){
        roof = 0;
    };
};



class RichGuy {
    vector<Car *> cars;
public:
    void goDrive() {

        for(int i = 0; i < cars.size(); ++i) {
            if(Lamborghini* lambo = dynamic_cast<Lamborghini*>(cars[i])) {
                lambo->retractTheRoof();
            };
            goFast();
        };
    };
};
Run Code Online (Sandbox Code Playgroud)

在示例中,有一个 …

c++ oop polymorphism

17
推荐指数
2
解决办法
1788
查看次数