相关疑难解决方法(0)

使用私有静态方法

您如何看待使用私有静态方法

就个人而言,我更喜欢使用静态私有方法来进行非静态,只要它不需要访问任何实例字段.

但我听说这种做法违反了OOP原则.

编辑:我想从风格的角度来看,而不是表现.

java oop static-methods coding-style

37
推荐指数
2
解决办法
5万
查看次数

在什么情况下静态方法是一个好习惯?

我看过以下讨论:

如果私有辅助方法可以是静态的,那么它们应该是静态的吗?如果它们的类没有成员变量,
那么所有方法都应该是静态的

似乎人们通常会接受静态方法,但对此有点怀疑,原因如下:

  1. 他们很难测试.
  2. 他们违反了OO原则.(一个人说,它们是功能,而不是方法.)

最可接受的静态方法是私有静态方法.但那么为什么存在静态方法,在什么情况下它们是首先被采用的?

java methods static

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

如果它们的类没有成员变量,那么所有方法都应该是静态的

我和我合作过的人发生过争吵,这真的让我烦恼.如果你有一个只有calculateRiskor或和方法calculatePrice的类,那么这个类是不可变的并且没有成员变量,那么这些方法应该是静态的,这样就不必每次都创建一个类的实例.我使用以下示例:

public class CalcService {
  public int calcPrice(Trade trade, Date date) {
    ...
  }
  public double calcRisk(Trade trace, Date date) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这些方法应该是static吗?

java static

31
推荐指数
5
解决办法
4304
查看次数

什么时候不在Java中使用static关键字?

什么时候在方法签名上使用Java中的static关键字被认为是不好的做法?如果方法基于某些参数执行函数,并且不需要访问非静态的字段,那么您是否总是希望这些类型的方法是静态的?

java static static-methods

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

Model类(在MVC中)应该使用静态方法还是实例方法?

在MVC框架方面,我应该使用静态方法还是实例方法?

例如,假设一个Users类,以及一个getUserById()返回User类的方法,哪个是更好的选择?

Users users = new Users();
User ret = users.getUserById(123);
Run Code Online (Sandbox Code Playgroud)

要么

User ret = Users.getUserById(123);
Run Code Online (Sandbox Code Playgroud)

假设类中没有实例变量Users,哪一个是更好的选择?

java oop model-view-controller static-methods design-patterns

6
推荐指数
1
解决办法
2574
查看次数

在这个简单的例子中,static关键字的目的是什么?

可能重复:
方法何时应该是静态的?

通常在为类编写静态方法时,可以使用该方法访问该方法ClassName.methodName.在这个简单的例子中使用'static'的目的是什么?为什么应该/不应该在这里使用它?私有静态也失败了使用静态的目的?

public class SimpleTest { 

   public static void main(String[] args) {
         System.out.println("Printing...");
         // Invoke the test1 method - no ClassName.methodName needed but works fine?
         test1(5);
   }

   public static void test1(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   public void test2(int n1) {
         System.out.println("Number: " + n1.toString());
   }
   //versus
   private static void test3(int n1) {
         System.out.println("Number: " + n1.toString());
   }
}
Run Code Online (Sandbox Code Playgroud)

我看了几个教程.例如http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

我对它的理解是,不是创建一个类的实例来使用该方法,而是可以使用类名 - 在某些情况下节省内存,每次使用特定方法构建对象都没有意义.

java static

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

在 EJB 中使用“私有静态”辅助方法

我有一个简单的 EJB:

@Stateless
public class EJB {

    public void aMethod() {
        // ...
        Event event = createEvent();
        // ...
    }

    private static Event createEvent() {
        Event event = new Event();
        // ...
        return event;
    }
}
Run Code Online (Sandbox Code Playgroud)

IntelliJ Ultimate 显示错误,因为 EJB 内存在静态方法。

使用 JBoss EAP,EJB 可以正常工作。EJB 规范是否禁止使用(私有)静态“帮助程序”方法?为什么?为什么它可以与 JBoss EAP(以及很可能的其他应用程序服务器)一起使用?

java jboss ejb intellij-idea jakarta-ee

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

java对象,共享变量

我在这里有一个简单的问题。如果我在主类中 [declared] 的对象中声明一个变量,如下所示:

public static int number;
Run Code Online (Sandbox Code Playgroud)

(通常我这样声明

private int number;
Run Code Online (Sandbox Code Playgroud)

)

它可以在主类中[声明]的不同对象中使用吗?顺便说一句,我不在乎安全性 atm,我只是想让一些东西工作,不在乎保护)

java static-members

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