小编use*_*633的帖子

用正斜杠替换反斜杠

我有以下路径: com/teama/merc/test/resTest 我想将其转换为: com\teama\merc\test\resTest

我想上面的路径附加到路径: C:\Users\Toby\git\MERCury\MERCury\ 随着str.replace('/', '\\');但是,当我追加两个串在一起的,是这样的输出: C:\Users\Toby\git\MERCury\MERCury\com/teama/merc/test/resTest

这是有问题的代码:

    String home = System.getProperty("user.dir");
    path.replace('/', '\\');
    System.out.println(path);

    String folder = home + File.separatorChar + path;
    System.out.println(folder);

    File file = new File(folder);
    if(file.isDirectory())
    {
        System.out.println(file.getPath() + " is a directory");
    }
Run Code Online (Sandbox Code Playgroud)

由于斜杠,附加路径不会被视为文件夹.有帮助吗?

编辑:只是为了澄清,完整路径(两个附加的字符串)实际上是一个文件夹.

java regex file

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

将子类对象添加到超类列表中

我有一个方法,它接受一个超类的列表(特别是我的类 Mob)。它看起来像这样:

List<? extends Mob> mobs
Run Code Online (Sandbox Code Playgroud)

我希望能够将任何扩展超类 Mob 的对象添加到此列表,如下所示:

spawnMob(new Zombie(World.getInstance(), 0, 0), World.getInstance().getZombies());
Run Code Online (Sandbox Code Playgroud)

这是有问题的方法:

public static void spawnMob(Mob mob, List<? extends Mob> mobs){
    mobs.add(mob);
}
Run Code Online (Sandbox Code Playgroud)

这行代码World.getInstance().getZombies()返回 Zombie 对象的 List。僵尸扩展了暴民。

然而,这行代码:

mobs.add(mob);
Run Code Online (Sandbox Code Playgroud)

抛出这个错误:

The method add(capture#1-of ? extends Mob) in the type List<capture#1-of ? extends Mob> is not applicable for the arguments (Mob)
Run Code Online (Sandbox Code Playgroud)

我可以做什么来解决这个问题?

编辑,将方法更改为 except 后,List<Mob>我​​收到此错误:

The method spawnMob(Mob, List<Mob>) in the type MobSpawner is not applicable for the arguments (Zombie, List<Zombie>)
Run Code Online (Sandbox Code Playgroud)

java list

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

C++继承构造函数

我有一个类,Tile它有一个带有Color对象参数的构造函数:

class Tile
{
public:
    static const int size = 32;

    Tile();
    Tile(Color &color);

    void render(int x, int y);

    Color getColor();

    ~Tile();
private:
    Color _color;
};
Run Code Online (Sandbox Code Playgroud)

然后我有一个子类,TileGrass继承Tile:

class TileGrass : public Tile
{
public:
    TileGrass();
    ~TileGrass();
};
Run Code Online (Sandbox Code Playgroud)

现在的问题是TileGrass需要Tile使用Color参数继承构造函数.但是,TileGrass对象已经知道它需要给超类提供什么颜色,所以我不想Color在创建新TileGrass对象时传入对象.在Java中,我可以这样做:

public class TileGrass extends Tile {

public TileGrass() {
    super(color object);
}
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C++中做这样的事情?

c++ inheritance constructor

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

标签 统计

java ×2

c++ ×1

constructor ×1

file ×1

inheritance ×1

list ×1

regex ×1