java - 使用 main 的输入参数调用构造函数时遇到问题
问题描述
我正在尝试使用 Java,并使用面向对象的原则创建一个小型扑克游戏。但是,我遇到了从 main 调用构造函数的问题。
class Card
{
private char face;
private char suit;
Card(char face, char suit)
{
this.face = face;
this.suit = suit;
}
@Override
public String toString()
{
return Character.toString(face) + Character.toString(suit);
}
}
public static void main(String[] args)
{
Card oneCardHand = new Card('A', 'c');
System.out.println("Made it this far");
System.out.println(oneCardHand);
}
我收到以下错误:
非静态变量 this 不能从静态上下文中引用
所以我觉得我要么错过了一个愚蠢的语法,要么更有可能不理解关于静态和非静态变量的关键见解。
解决方案
该类Card
被声明为实例内部类。任何一个:
- 将其转换为静态内部类:
static class Card
- 或者,创建外部类的实例以获取内部类的实例(假设调用了外部类
Outer
):
Outer.Card oneCardHand = new Outer().new Card('A', 'c');
或者,在类中移动 main 方法
Card
。或者,将
Card
类移动到单独的源文件 (Card.java
),这通常是更可取的方法。
阅读有关嵌套类的更多信息:
推荐阅读
- python - 提取里面但没有的项目
来自 html - javascript - JS:单击元素时我更接近哪一端
- python - 使用 .winfo_exists() 未正确设置标志
- android - Android - 更改不同地图时删除标记
- java - org.json.XML 的 toJSONObject 方法不能包含大写的重音字母
- android - 在 bottomsheetfragment 中重叠 Imageview
- javascript - 使用 VueJs 的相似对象是不同的
- c# - System.InvalidOperationException: '类型 System.Collections.Generic.List`1 不能在此上下文中使用。'
- android - MediaRouteButton 在 Fragment 中未激活
- python - 如何从布尔索引数组逆向工程原始数组?