小编Bur*_*ak.的帖子

反射 - 从HashMap获取不同的结果 - LinkedHashMap

我会保持简短,我有一个Dog类如下:

public class Dog 
{
   public void Foo() 
   { 
      System.out.println("Right Call");
   }

   public void Boo()
   {
     System.out.println("Wrong Call");
   }
}
Run Code Online (Sandbox Code Playgroud)

和以下主要方法:

HashMap<String, Method> map = new HashMap<String, Method>();

Dog d = new Dog();

Method[] method = d.getClass().getMethods();

map.put("foo", method[0]);

Method a = map.get("foo");

try {
    a.invoke(d, null);
} catch (IllegalAccessException | IllegalArgumentException
        | InvocationTargetException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

每当我再次运行它时,它只是任意给出Right CallWrong Call输出.

我需要确保每次放置"foo"密钥时,都必须调用Foo()方法,而不是Boo().

显然,它并没有缓解我的"方法调用"问题.我怎样才能克服这个问题?我每次都必须调用正确的方法.我对这些反思很新,有什么我不应该做的,或者我做错了什么?或者有更好的方法来实现此方法调用?

编辑:我也试过LinkedHashMap,但结果是一样的.

谢谢.

java reflection methods hashmap linkedhashmap

4
推荐指数
2
解决办法
235
查看次数

Android Studio - 缺少可绘制的文件夹

我试图在Android Studio中为我的项目添加一些图像但是我注意到我只有drawable文件夹,其他(drawable-hdpi等)文件夹都没有.

所以我决定手工制作它们,只需创建具有适当名称的文件夹并放置图像:

在此输入图像描述

但它仍然一直给出我无法处理的错误.为什么会出现此错误以及如何解决?

谢谢.

android drawable android-drawable android-studio

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

Quicksort在常数上给出stackoverflow,但不在随机数上

当我使用rand()或使用任何常量值分配数组值时,我对此C++代码段的行为有何不同感到非常困惑.

const int MIN_SIZE = 10000;
const int MAX_SIZE = 100000;

int main()
{
  for(j = MIN_SIZE; j <= MAX_SIZE; j += MIN_SIZE) {
    int *arrPtr = new int[j];
    for(int i = 0; i < j; i++)
       arrPtr[i] = 1; //When I put rand() here, it works fine but in any constant it gives stack overflow
    quickSort(arr, 0, j - 1);
    delete []arrPtr;
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码基本上创建了一个动态分配的数组,j其大小MIN_SIZE为每一轮增加(10,000)并为每个索引分配一些特定的整数.在赋值之后,它将使用我将在下面提供的快速排序算法进行排序,然后在完成后释放该数组.整件事重复达到MAX_SIZE(100,000).

这是我的Quicksort代码:

void quickSort(int *arr, int front, …
Run Code Online (Sandbox Code Playgroud)

c++ arrays sorting algorithm quicksort

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

逻辑和函数编程之间gcd的实现差异

我目前正在学习编程语言概念和语用学,因此我觉得我需要帮助来区分声明性语言系列的两个子分支.

请考虑以下分别用Scheme和Prolog编写的代码片段:

;Scheme 
(define gcd
    (lambda (a b)
         (cond ((= a b) a)           
               ((> a b) (gcd (- a b) b))
               (else (gcd (- b a) a)))))
Run Code Online (Sandbox Code Playgroud)
%Prolog
gcd(A, B, G) :- A = B, G = A.
gcd(A, B, G) :- A > B, C is A-B, gcd(C, B, G).
gcd(A, B, G) :- B > A, C is B-A, gcd(C, A, G).
Run Code Online (Sandbox Code Playgroud)

我不明白的是:

这两种不同的编程语言如何表现不同?


我们在哪里做出差异,以便将它们归类为基于功能或基于逻辑的编程语言?

就我而言,它们完全相同,调用递归函数直到它终止.

logic scheme functional-programming prolog clpfd

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