小编Avi*_*ohn的帖子

用Java动态地转换对象?

我有一个抽象类,Entity有几个子类:SubclassA,SubclassB,和SubclassA有一个子类SubSubClass.

我还有一个someObject类的对象,SomeClass如下所示:

class SomeClass{
    void doSomething(Entity e){..}
    void doSomething(SubclassA e){..}
    void doSomething(SubclassB e){..}
    void doSomething(SubSubClass e){..}
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<Entity> list.此列表中的每个项目都会传入someObject.doSomething.

for(Entity entity : list){
    someObject.doSomething(entity);
}
Run Code Online (Sandbox Code Playgroud)

doSomething(Entity e)无论实际的当前Entity类型是什么,总是会调用Thing ,因为引用类型总是如此Entity.为了解决这个问题,我需要进行投射,如:someObject.doSomething((SubclassB)entity).

所以我想知道是否有一种方法可以将对象动态地转换为任何具体类型,而无需instanceof操作.

如果没有办法做到这一点,你会如何处理我的情况?

java casting

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

如何将文本文件复制到另一个文件中?

如何将文本文件复制到另一个文件中?我试过这个:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream infile("input.txt");
    ofstream outfile("output.txt");
    outfile << infile;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这最终会留下以下值output.txt:0x28fe78.

我究竟做错了什么?

c++ file stream

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

Linq错误:"string []不包含'Except'的定义."

这是我的代码:

    public static string[] SplitKeepSeparators(this string source, char[] keptSeparators, char[] disposableSeparators = null)
    {
        if (disposableSeparators == null)
        {
            disposableSeparators = new char[] { };
        }

        string separatorsString = string.Join("", keptSeparators.Concat(disposableSeparators));
        string[] substrings = Regex.Split(source, @"(?<=[" + separatorsString + "])");

        return substrings.Except(disposableSeparators); // error here
    }
Run Code Online (Sandbox Code Playgroud)

我得到编译时错误string[] does not contain a definition for 'Except' and the best extension method overload ... has some invalid arguments.

我已经包含using System.Linq在源文件的顶部.

怎么了?

c# linq

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

在两个不同的模块中从同一模块导入相同的对象:

module1.py:

from somemod import something
import module2
Run Code Online (Sandbox Code Playgroud)

module2.py:

from somemod import something
Run Code Online (Sandbox Code Playgroud)

somethingmodule1完全相同的对象somethingmodule2

例如,如果在导入module2之前,module1会这样做something.val = 10.module2可以通过这样做获得价值something.val吗?或者它得到一个不同的对象?

换句话说:即使它已经在解释器会话中导入到另一个模块中,它是否import执行导入的模块?

另外,from somemod import something如果module1已导入它,是否有必要在module2中?

python namespaces module object

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

为什么这个导入工作?

flask(https://github.com/mitsuhiko/flask)项目(简化)的根文件夹如下所示:

flask/
    __init__.py
    ... some more files ...
tests/
    test_basic.py
    ... some more files ...
Run Code Online (Sandbox Code Playgroud)

代码test_basic.py:

import flask
# some more code ...
Run Code Online (Sandbox Code Playgroud)

这个导入flask是如何成功的,因为包不是test_basic.py文件树中的兄弟?Python如何知道在哪里找到flask

希望看到from .. import flask.但事实并非如此.为什么这样做?项目py.test用作测试的重要性是否重要?

python

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

为什么使用“mingw32”链接可以解决 SDL2 的编译问题?

我正在学习在 Windows 和 Mingw 上使用 SDL2 和 C 进行开发。

我尝试使用以下命令来编译我的程序:

gcc -IC:C:/msys64_new/mingw64/include/SDL2 *.c -o game.exe -g -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lSDL2main -lSDL2
Run Code Online (Sandbox Code Playgroud)

它给出了错误:Undefined reference to WinMain

然后我读到我应该添加-lmingw32到命令中:

gcc -IC:C:/msys64_new/mingw64/include/SDL2 *.c -o game.exe -g -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lmingw32 -lSDL2main -lSDL2
Run Code Online (Sandbox Code Playgroud)

现在可以了!我的问题是:

  1. 为什么这样可以解决问题呢?链接 with 可以libmingw32.a解决这个问题吗?

  2. 怎么gcc找到libmingw32.a?我所指向的文件夹中似乎没有这样的文件-LC:/msys64_new/mingw64/lib

c windows sdl mingw

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

工会成员的析构函数似乎是自动调用的

我正在尝试实施标记联合。

我的理解是,在 C++ 联合中,非静态成员的非平凡(即非空)析构函数永远不会被调用,因此我们必须自己调用它们。这就是我所做的:

#include <iostream>

class C {
public:
  C() {
    std::cout << "C Ctor" << std::endl;
  }
  ~C() {
    std::cout << "C Dtor" << std::endl;
  }
};

class B {
public:
  B() {
    std::cout << "B Ctor" << std::endl;
  }
  ~B() {
    std::cout << "B Dtor" << std::endl;
  }
};

struct S {
  int type;

  union U {
    C c;
    B b;

    U() {

    }

    ~U() {}
  } u;

  S(int type) : type(type) {
    if (type …
Run Code Online (Sandbox Code Playgroud)

c++ union destructor

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

线程:我如何知道方法运行的线程?

在Java中:

我有一个开始在课堂上运行的线程Xclass.该线程a()从类调用方法Yclass,a()方法b()从类调用方法 Zclass.

b()肯定在同一个线程中运行a()

java methods multithreading class

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

Java 8:是否可以为变量分配方法引用?

我用Google搜索了这个问题的答案但找不到答案.

在Java 8中,我知道这是可能的:

// someMethod is defined as: someMethod(AFunctionalInterface i)
someMethod(someObject::someOtherMethod);
Run Code Online (Sandbox Code Playgroud)

问题是:是否可以执行以下操作

AFunctionalInterface i = anObject::SomeMethod;
Run Code Online (Sandbox Code Playgroud)

另外,是否可以将lambda分配给变量并传递给它,就像这样?

Printer f = () -> System.out.println(..); methodThatTakesPrinter(f);

java

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

Java 8方法引用与"实际"函数指针有何不同?

有人告诉我tbat Java 8方法引用没有'true'函数指针那么强大.

怎么回事?方法引用与函数指针有何不同?

java lambda closures function-pointers java-8

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