相关疑难解决方法(0)

为什么静态变量被视为邪恶?

我是一名Java程序员,对企业界不熟悉.最近我使用Groovy和Java 开发了一个应用程序.我编写的所有代码都使用了相当多的静态代码.高级技术部门要求我减少使用的静力学数量.我用Google搜索了同样的东西,我发现很多程序员都反对使用静态变量.

我发现静态变量使用起来更方便.而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的函数进行10,000次调用,我很乐意将该方法设置为静态并使用简单的方法Class.methodCall()而不是用10,000个类的实例来混乱内存,对吧?

此外,静态减少了代码其他部分的相互依赖性.他们可以充当完美的国家持有者.除此之外,我发现静态在一些语言中得到广泛实现,如SmalltalkScala.那么为什么程序员(尤其是Java世界)中普遍存在对静态的压迫呢?

PS:如果我对静力学的假设是错误的,请纠正我.

java static

606
推荐指数
16
解决办法
23万
查看次数

无法使用实例引用访问成员"<method>"

我正在进入C#,我遇到了这个问题:

namespace MyDataLayer
{
    namespace Section1
    {
        public class MyClass
        {
            public class MyItem
            {
                public static string Property1{ get; set; }
            }
            public static MyItem GetItem()
            {
                MyItem theItem = new MyItem();
                theItem.Property1 = "MyValue";
                return theItem;
            }
        }
     }
 }
Run Code Online (Sandbox Code Playgroud)

我在UserControl上有这个代码:

using MyDataLayer.Section1;

public class MyClass
{
    protected void MyMethod
    {
        MyClass.MyItem oItem = new MyClass.MyItem();
        oItem = MyClass.GetItem();
        someLiteral.Text = oItem.Property1;
    }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,除非我去访问Property1.智能感知只给我" ,和"作为选项.当我将鼠标移到上面时,Visual Studio给出了这样的解释:EqualsGetHashCodeGetTypeToStringoItem.Property1

MemberMyDataLayer.Section1.MyClass.MyItem.Property1.getcannot be …

c# asp.net

175
推荐指数
5
解决办法
30万
查看次数

用外行人的话来说,Java中"静态"意味着什么?

我被告知了几个定义,在维基百科上看,但作为Java的初学者,我仍然不确定它的含义.有流利的Java和白痴吗?

java static reference

97
推荐指数
4
解决办法
17万
查看次数

"volatile"在Java中意味着什么?

我们volatile在其中一个项目中使用它来维护不同线程访问的变量的相同副本.我的问题是,它是否是正常的使用volatilestatic.编译器没有给出任何错误,但我不明白使用两者的原因.

java volatile java-memory-model

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

静态与实例变量:差异?

静态变量和实例变量之间有什么区别.以下句子是我无法得到的:

在某些情况下,类的所有对象只应共享特定变量的一个副本 - 这里使用静态变量.
静态变量表示类范围信息.类的所有对象共享相同的数据.

我认为实例变量是使用类宽,而静态变量只在自己的方法中有范围?

java class instance-variables static-variables

20
推荐指数
3
解决办法
8万
查看次数

我对在多线程java中使用静态方法感到困惑?

关于静态的东西:

  • 类共享静态方法的实例

类似的问题:

我很困惑:

  • 静态方法只有一个内存块?
  • 如果我在多线程中使用静态方法,它会阻止吗?

java static multithreading static-methods

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

Java中的实例和类(静态)变量之间有什么区别

这个问题的标题实际上是以前的考试问题,我正在寻找澄清/答案.

请注意,我正在学习Java并且正在熟悉它的语法.

我知道以前可能会问过这个问题,如果有的话,有人可以告诉我,如果可能的话,我可以在哪里提出这个问题吗?如果是这种情况,也请接受我的道歉.为了表明我一直在研究这个领域,我自己的理解是实例变量属于某个类(模板)的对象/实例,并且可以在需要时在该实例/对象中进行更改(变异).

类变量是一个只有一个副本且可以访问但不能被修改(变异?)的变量,但是所有类都可以根据需要使用它?

我在这里走在正确的轨道上吗?

另外,'静态'到底是做什么的?如果一个类的实例位于类的主实例中,那么它是静态的吗?

非常感谢.

java static instance-variables class-variables

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

为什么Object在Singleton模式中变为静态?

为什么Object static以Singleton模式制作?
它的实际用途是什么?
如果我们不使对象静态会发生什么?

public class SingleObject {

   //create an object of SingleObject
   private static SingleObject instance = new SingleObject();

   //make the constructor private so that this class cannot be
   //instantiated
   private SingleObject(){}

   //Get the only object available
   public static SingleObject getInstance(){
       return instance;
   }

   public void showMessage(){
       System.out.println("Hello World!");
   }
}
Run Code Online (Sandbox Code Playgroud)

java design-patterns

7
推荐指数
1
解决办法
1419
查看次数

STATIC变量的概念和Java中的方法

我一直在寻找明确的答案,我认为我有点得到它,但同时我不太明白该关键字的概念,静态.

这是我做的场景:

package oops;

public class Math {

boolean notNumber = false;
static boolean notString = false;

public static void main(String[] args) {

    int num1 = 1;
    static int num2 = 1; //doesn't work

    Math math = new Math();
    math.notNumber = true;

    notNumber = true; //doesn't work
    notString = true;
}

public void whatever() {
    notNumber = true;
}

}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么不能在静态方法(或任何方法)中将变量声明为静态?"范围"是什么意思?我知道静态变量与类的特定实例无关,它更像是一个"全局"变量.但是为什么不能在方法(num2)中创建静态变量,但可以使用静态变量(notString)?

  2. 当你制作静态变量时,你是否必须在课堂上制作它们?方法不可能?

  3. 由于我将notNumber声明为非静态,我知道我必须创建一个对象来访问该变量.但是为什么它在没有任何对象创建的情况下工作,而不是在静态方法main()中?

java static scope

5
推荐指数
1
解决办法
144
查看次数

如何从子类修改超类变量?

在C++中,我可以在多个文件中使用1个类,当我使用一个文件中的函数修改值时,它将全局更改该值.

在Java中,每个文件都必须拥有自己的类; 当我使用一个文件中的方法更改值时,它不会全局更改此值.

例如,在C++中,文件可能如下所示:

someClass.h

class someClass{
private:
    int x;
public:
    //Constructor
    someClass(){
        x = 5;
    }
    void changeVariable(); //Declaring function for later
}
Run Code Online (Sandbox Code Playgroud)

main.cpp中

int main(){
    someClass cClass;
    cClass.changeVariable(); //Call function
    cout << x; //outputs 6
}
Run Code Online (Sandbox Code Playgroud)

fileA.cpp

void someClass::changeVariable(){
    x = 6; //x is changed to 6 globally.
}
Run Code Online (Sandbox Code Playgroud)

在Java中:

someClass.java

public class someClass {
    int x;

    //Constructor
    public someClass() {
        x = 5;
    }
Run Code Online (Sandbox Code Playgroud)

main.java

public class main {
    public static void main() {
        someClass cClass = …
Run Code Online (Sandbox Code Playgroud)

java class subclass

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