出于某种原因,当我尝试从动作中的另一个类调用非静态方法时,我得到一个错误,说我不能在静态方法中调用非静态方法.但是,我从未将动作或其父母定义为静态.为什么我会收到此错误?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class KeyListenerFrame extends JFrame implements KeyListener {
GridLayout gridLayout1 = new GridLayout();
JPanel listenerPan = new JPanel();
public KeyListenerFrame() {
try {
jbInit();
listenerPan.addKeyListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
listenerPan.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP,0,true), "showKey");
listenerPan.getActionMap().put("showKey", showKey);
listenerPan.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0, true), "showKey");
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
KeyListenerFrame klf = new KeyListenerFrame();
klf.setBounds(10,10,500,500);
klf.setVisible(true);
klf.focusPanel();
}
public void focusPanel() {
listenerPan.requestFocus();
}
private …Run Code Online (Sandbox Code Playgroud) 这是类类内部方法的一部分.我的目标是生成一个随机数,该数字将存储在名为iCell的变量中.之后,iCell将用于switch语句来更改字符,单元格.我从iCell = Random.Next(1,9);"错误,非静态字段,方法或属性'System.Random.Next(int,int)'"所需的对象引用的行中收到错误.在类方法中是否不可能有随机数生成器?
public void CPUMove() //method marks cell for CPU
char cell;
int iCell;
Random rand = new Random();
iCell = Random.Next(1, 9);
switch (iCell)
{
case 1:
cell = '1';
break;
case 2:
cell = '2';
break;
case 3:
cell = '3';
break;
case 4:
cell = '4';
break;
case 5:
cell = '5';
break;
case 6:
cell = '6';
break;
case 7:
cell = '7';
break;
case 8:
cell = '8';
break;
case 9:
cell …Run Code Online (Sandbox Code Playgroud) 我的班级看起来像这样:
public Class A {
private static final ObjectMapper mapper = new ObjectMapper();
public String get(String key) {
JsonNode nod = mapper.readTree(getFromCache(key));
}
}
Run Code Online (Sandbox Code Playgroud)
多个线程将访问此方法.我需要同步它吗?我是否需要在方法中移动映射器?
我知道静态意味着变量或方法属于类本身,我们可以将它与ClassName.StaticMethodName一起使用.所以问题是:我们可以在另一个非静态方法中使用非静态方法,但我们不能在静态方法中使用非静态方法.我只是不明白为什么我们可以在另一个非静态方法中使用非静态方法?我们不需要一个对象来使用非静态方法吗?对于静态方法,我们需要使用类名,这就足够了.但是,为什么我们不需要对象来使用方法?例如:
//此代码不会生成任何错误.还有一些我不知道的东西?也许C#在methodB()之前添加一个隐藏的对象?
ClassA()
{
public void methodA()
{
methodB();
}
public void methodB()
{
}
}
Run Code Online (Sandbox Code Playgroud) 我只是想看看我是否能完全理解静态的概念和主类中静态的原因.关键字static指的是主类.主类中的方法是静态的原因是因为主类不处理对象而是处理类本身.
但是构造函数处理对象因此使用非静态构造函数,因为对象具有独特的特性,并且将它们设置为静态是没有意义的.
如果有人能够看到我在声明中犯了错误或者能指引我朝着正确的方向前进,那将对我有所帮助!:)
我有一个类,在其中我有一些静态和一些非静态方法,所以当我试图从静态方法访问非静态方法时,我得到了那个着名的错误.每当我在这个论坛上搜索时,我会在有两个课程的时候得到解决方案.我的问题是如果它们在同一个类中,如何从静态方法调用非静态方法?
我正在努力
new ClassName().methodName();
Run Code Online (Sandbox Code Playgroud)
但我的方法包含发送Intent和finish(),所以如果我创建其他对象而不是完成不起作用.
我在Main中声明了两个变量,并在一个非静态方法中更改了它们,它接收了一些变量(包括我改变的两个变量)并返回另一个变量,但是在使用return()之后Main不会识别其他变量的变化;和值不断重置.如何让它识别出变化?
string Attack(int Mhp, int Chp, int Cdmg, int Mdmg, string charname)
{
string res;
Mhp -= Cdmg;
Chp -= Mdmg;
Console.WriteLine();
res=charname + "'s Health has been reduced to " + Chp +", and Monster's Health reduced to " + Mhp;
return(res);
}
Run Code Online (Sandbox Code Playgroud)
Mhp和Chp保持与我在Main()中声明的相同;如果角色的健康状况不断重置,我的代码将毫无意义.
提前致谢!
non-static data member initializers only available with -std=c++11 or -std=gnu++11
[enabled by default]
int Red = 255;
non-static data member initializers only available with -std=c++11 or -std=gnu++11
[enabled by default]
int Green = 255;
non-static data member initializers only available with -std=c++11 or -std=gnu++11
[enabled by default]
int Blue = 255;
Run Code Online (Sandbox Code Playgroud)
不知道为什么这不起作用.
struct color {
int Red = 255;
int Green = 255;
int Blue = 255;
};
Run Code Online (Sandbox Code Playgroud) 我对 C++ 非常陌生,并尝试创建一个Student带有类型分数向量的简单类int。
这是我的班级:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <fstream>
#include <sstream>
using namespace std;
class Student {
string last;
string first;
vector<int> scores(10);
public:
Student():last(""), first("") {}
Student(string l, string f) {
last = l;
first = f;
}
~Student() {
last = "";
first = "";
}
Student(Student& s) {
last = s.last;
first = s.first;
scores = s.scores;
}
Student& operator = (Student& s) {
last = s.last;
first …Run Code Online (Sandbox Code Playgroud) non-static ×10
java ×5
static ×5
c# ×3
methods ×3
c++ ×2
class ×2
c++11 ×1
constructor ×1
data-members ×1
random ×1
reference ×1
vector ×1