gpt4 book ai didi

java - 如何通过Java中方法的参数更改所使用的方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:35 25 4
gpt4 key购买 nike

我正在用 java 做一个简单的扑克游戏,目前正在研究播放器。当需要能够按花色、值(value)和牌组排名对玩家的牌组进行排序时,我想知道是否可以通过一种方法来完成这一切,而无需仅使用 if 语句。我通过研究了解了java反射,但我不确定它是否是我需要的,这让我感到困惑。不过,我仍然有兴趣寻找解决方案。

所以我想要如下所示的方法来通过更改参数来简单地更改其排序方式。

import java.lang.reflect.*;
public class BasicPlayer
{
// instance variables
Card[] myHand;

/**
* Constructor, places 5 cards in player's hand
*/
public BasicPlayer()
{
myHand = new Card[5];
for (int i = 0; i < 5; i++)
{
myHand[i] = new Card(i);
}

}

/**
* sort the deck by rank, suit, or value
*/
public void sort(String n)
{
Method m = Card.class.getDeclaredMethod("get"+n);
for (int i = 0; i < 52; i++)
{
for (int j = 0; i < 51; j++)
{
// prob not correct, unsure how to invoke method on object
// in array
if (m.invoke(myHand[j]) < m.invoke(myHand[j+1]))
{
Card t = myHand[j];
myHand[j] = myHand[j+1];
myHand[j+1] = t;
}
}
}
}
}

感谢您的回复!

最佳答案

正如已经建议的那样 - 使用 Comparator<Card> 是解决您问题的正确方法。

这里有一个非常好的 Comparator and Comparable 入门教程.

这是关于如何 design deck of cards in Java 的非常彻底的设计审查。 。它包括比较器示例以及其他良好的 OOP 设计点。

关于java - 如何通过Java中方法的参数更改所使用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49309134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com