如何使用私有构造函数从类创建对象?

2023-11-21

我有一个类游戏,它是我的主类,还有一个二类卡牌。 Card 类的属性和构造函数是私有的,只有函数 init 是公共的。 函数 init 检查值的合理性,如果一切正常,则构造函数将获取值并创建一个对象。 现在我想在 Game 类中从 Card 类创建一个对象。 我该怎么做?

这是我的代码:

班级游戏:

import java.util.List;
import java.util.Vector;


public class Game {


public  static void main(String[] args)
{
   /*
CREATING NEW CARD OBJECT
 */

    int value = 13;
    Vector<Card> _card_set = new Vector<Card>();
    for (int i = 2; i < 54; i++)
    {

        if(--value == 0)
        {
            value = 13;
        }

        Card _myCard;
        _myCard.init(i,value);
     }
   }
 }

班级卡:

public class Card {

private int index;
private  int value;
private String symbol;

/*
CREATING A PLAYCARD
*/

private Card(int index,int value)
{
    this.index = index;
    this.value = value;
    value = (int) Math.floor(index % 13);

    if(this.index >= 2 && this.index <= 14)
    {
        this.symbol = "KARO";
    }
    else if (this.index >= 15 && this.index <= 27)
    {
        this.symbol = "HERZ";
    }
    else if (this.index >= 26 && this.index <= 40)
    {
        this.symbol = "PIK";
    }
    else if (this.index >= 41 && this.index <= 53)
    {

        this.symbol = "KREUZ";
    }
    System.out.println("Card object wurde erstellt: " + symbol + value);
    System.out.println("------<><><><>------");
}

/*
SHOW FUNCTION
GET DETAILS ABOUT PLAYCARD
 */
public String toString()
{
    return "[Card: index=" + index + ", symbol=" + symbol + ", value=" + value + "]";
}

/*
Initialize Card object
 */

public Card init(int index, int value)
{
    /*
    Check for plausibility
    if correct constructor is called
     */

    if((index > 1 || index > 54) && (value > 0 || value < 14))
    {
       Card myCard = new Card(index,value);
        return  myCard;
    }
    else
    {
        return null;
    }
  }
}

你应该定义你的initmethod 为 static,实现了 Braj 所说的静态工厂方法。这样,您就可以创建如下新卡:

Card c1 = Card.init(...);
Card c2 = Card.init(...);
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用私有构造函数从类创建对象? 的相关文章

随机推荐

  • 从 Android Activity 调用 javascript 函数

    我想从 android 活动调用 javascript 函数 但它似乎不起作用 我使用了 android webview 函数 webview loadUrl javascript function 这是我的安卓代码 package com
  • 在 Delphi XE 中构建事件宏

    根据Delphi的帮助文件 当我打开对话框将构建事件添加到项目选项时 该对话框应显示我可以在构建事件的命令行上使用的宏 占位符 列表 当我在 Delphi XE 中尝试此操作时 宏列表为空 帮助文件也没有说明哪些宏可用 我可以找到 那么 哪
  • 如何将字符串转换为字典或列表?

    我有诸如以下的字符串 1 2 3 and a 1 b 2 如何将它们转换为列表 字典 有人提到ast literal eval or eval可以解析转换为列表 字典的字符串 有什么区别ast literal eval and eval a
  • Firestore - 检查模块与服务器的连接状态

    我注意到关闭互联网连接并重新打开后 while my Android app仍在运行 无论是否在后台 则需要Firestore模块需要很长时间才能重新获得与服务器的连接 大约一分钟 并且我无法进行任何操作Firestore操作直到恢复连接
  • 如何将 groupby.first() 与变换函数一起使用

    我想使用 groupby first 函数查找组的第一个非空值并将该值转换为组中的每一行 我尝试过以下代码 import pandas as pd import numpy as np raw data col1 a a a b b b b
  • MATCH AGAINST 和 LIKE 哪个 SQL 查询更好?

    要在数据库中搜索 foo desc 和 bar desc 任意列中同时具有关键字 foo 和 bar 的行 我会执行以下操作 SELECT FROM t1 WHERE MATCH t1 foo desc t2 bar desc AGAINS
  • 发布到 django Rest 框架

    我想使用以下方式发布到我的 Django 服务器post所以我可以添加一个todo物品 这是模型 class Todo models Model title models CharField max length 200 text mode
  • 如何使用 T-SQL 替换模式?

    我有规范化 POB 地址的代码 例如 其中包含的标准化之一是 set string replace string pobox pob 现在我想做类似的事情 我想找到任何直接跟在数字后面 中间没有空格 的 POB 并插入一个空格 我想找到模式
  • Chrome 无法播放 .mp4 文件

    我正在尝试让 HTML5 视频正常工作 我正在本地服务器上工作
  • ggplot 中的自定义形状(geom_point)

    Aim 我正在尝试改变形状geom point变成一个十字 所以不是 加 加 符号 而是 死亡 十字 Attempt 假设我有以下数据 library tidyverse df lt read table text x y 1 3 2 4
  • 如何以编程方式滚动到 UIWebView 的底部?

    我知道以前曾有人问过类似的问题 但似乎从未得到解答 我有一个 UIWebView 并通过字符串添加一些内容 我使用 UIWebView 是因为我动态地向其中添加一些图像 并且还使用其他 HTML 功能 此示例代码经过简化 NSString
  • pandas 在执行 groupby 后重置索引并保留选择性列

    我想采用 pandas 数据框 按列计算唯一元素并保留其中 2 列 但是我在 groupby 之后得到一个多索引数据框 我无法 1 展平 2 仅选择相关列 这是我的代码 import pandas as pd df pd DataFrame
  • 将虚拟地址与下一页边界对齐

    我遇到了以下算法 该算法将虚拟地址与紧邻的下一页边界对齐 VirtualAddr VirtualAddr PageSize 1 另外 给定字节长度 将长度 四舍五入 对齐到页边界上 len PageSize 1 len len PageSi
  • #1055 - SELECT 列表的表达式不在 GROUP BY 子句中并且包含非聚合列,这与 sql_mode=only_full_group_by 不兼容

    我的查询 select libelle credit initial disponible v sum montant as montant FROM fiche annee type where type id type annee id
  • jQuery 中的按键:在 TEXTAREA 内按 TAB 键(编辑现有文本时)

    我想在 TEXTAREA 中插入 TAB 字符 如下所示
  • 什么是基数以及它如何影响性能 (SQL Server)?

    我们有一个巨大的表 我需要在其中对单行进行更新 我不知道该行的主键 但我有一个在该表中唯一的 varchar 值 我还有该表中其他一些列的值 运行更新需要三分钟以上 我假设它进行了全表扫描 查看表上的索引 列上的索引的基数为零 页数为零 还
  • 强制 TextView 多行,不带 \n

    知道如何在视图内空间耗尽后强制文本视图转到新行吗 我想要发生的行为是 在不以编程方式找出大小并强制换行的情况下 我希望它自行发生 在此代码中 它强制按钮离开屏幕
  • 方法签名中的 params 关键字的真正含义是什么

    我正在浏览 Troelsen 的 Pro C 2010 并发现了有关 params 关键字方法修饰符的讨论 阅读文本 MSDN 和其他 tubez 来源 在我看来 从 params 获得的唯一东西就是能够将逗号分隔的值列表传递给方法 我编写
  • Android Studio 错误:无法在模拟器中启动 AVD

    错误 调整分区 e2fsck 大小失败 退出代码为 1 我已确保在设置 AVD 时完全按照此视频进行操作 每当我使用 x86 64 系统映像运行 AVD 时 我都会收到以下消息 无法在模拟器中启动 AVD 输出 创建文件系统 参数 大小 6
  • 如何使用私有构造函数从类创建对象?

    我有一个类游戏 它是我的主类 还有一个二类卡牌 Card 类的属性和构造函数是私有的 只有函数 init 是公共的 函数 init 检查值的合理性 如果一切正常 则构造函数将获取值并创建一个对象 现在我想在 Game 类中从 Card 类创