相关疑难解决方法(0)

非公共顶级类与静态嵌套类

在我看来,非公共顶级类和静态嵌套类在创建辅助类时基本上执行相同的任务.


A.java


public class A 
{
    public static main (String[] args)
    {
        AHelper helper = new AHelper();     
    }
}
class AHelper {}
Run Code Online (Sandbox Code Playgroud)


A.java


public class A
{
    public static main (String[] args)
    {
        A.AHelper helper = new A.AHelper();     
    }

   static class AHelper {}
}
Run Code Online (Sandbox Code Playgroud)


除了它们的引用方式之外,我认为创建辅助类的两种方式之间差别不大.它可能主要归结为偏好; 有没有人看到我错过的任何东西?我想有些人会认为每个源文件有一个类更好,但从我的角度来看,在同一个源文件中有一个非公共顶级类似乎更干净,更有条理.

java class-design

18
推荐指数
3
解决办法
5201
查看次数

为什么每个文件只有一个类

仍然来自C++我发现创建许多小助手类和对象很麻烦.主要是因为每个班级必须有一个文件.我基本上有这样一个类:

public class mySimpleClass {
    public float[] numbers = new float[ 4 ];
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个课:

public class myNotSoSimpleClass {
    private mySimpleClass;
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

第二类不是那么简单就可以拥有自己的文件了.但是,简单的类连接到不那么简单的类,并且不必在自己的文件中包含那么少行代码是非常好的.

总而言之,这就是人们在C++中可以做到的事情:

public class myNotSoSimpleClass {
    private struct mySimpleClass {
        float numbers[ 4 ];
    } myStruct;
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

是否可以在另一个类或同一个文件中嵌入/使用一个类?如果我可以将这两个类设置为一个文件,我会发现使用大型项目​​更容易.或者Java是每个文件严格一个类,就是这样,语言?

java

15
推荐指数
4
解决办法
9900
查看次数

同一文件中的Java公共接口和公共类

在单个.Java文件中,是否可以拥有公共接口和公共类(实现接口)

我是Java编码的新手,并且在网上的大多数地方编写的.java文件不能包含超过2个公共类.我想知道接口和类是否也是如此.

java

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

如何从(静态)类中的类创建新的类实例?

我是Java的新手(有C#经验),

这就是我想要做的:

public final class MyClass
{
    public class MyRelatedClass
    {
      ...
    }
}

public class OtherRandomClass
{
    public void DoStuff()
    {
       MyRelatedClass data = new MyClass.MyRelatedClass(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

这在Eclipse中给出了这个错误:

不能访问BitmapEffects类型的封闭实例.必须使用BitmapEffects类型的封闭实例限定分配(egxnew A(),其中x是BitmapEffects的实例).

这在C#中可以使用静态类,这里应该怎么做?

java

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

单个文件中多个顶级Java类的用例?

Java中的非嵌套类是否合法使用?例如:

MyClass.java:

final class NonNestedClass {
    ...
}

public class MyClass {
    private NonNestedClass nonNested;
    ...
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这相当于在MyClass下有一个静态嵌套类.NonNestedClass无法访问MyClass的字段.有没有区别,更重要的是,这种范式是否合法使用?

java nested

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

我应该把我的课程放在主课之内还是之外?(最佳实践)

我刚刚开始使用 Java,尽管我已经有一些 PHP 中的 OOP 经验

在此示例中,我有一个名为 Person 的简单类,其中包含姓名、年龄和性别等字段。我想知道什么被认为是最好的做法,做这样的事情:

public class Main {
    public static void main(String[] args){
        Person customer = new Person("Jonh Smith", 21, 'M');
        System.out.println(customer.name);
    }

    public static class Person {
        public String name;
        public int age;
        public char sex;

        public Person(String name, int age, char sex){
            this.name = name;
            this.age = age;
            this.sex = java.lang.Character.toUpperCase(sex);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,Person 类需要是静态的才能工作,这让我想知道这可能不是最好的方法,这是另一种方法:

public class Main {
    public static void main(String[] args) {
        Person customer = new Person("Jonh Smith", 21, …
Run Code Online (Sandbox Code Playgroud)

java

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

如何在静态方法中抛出异常,两者都在同一个类中

Example1Exception和Example1Method属于同一个文件.将它们放在单独的文件中是没有意义的.

public class Example1
{
    public class Example1Exception extends Exception
    {
        public Example1Exception(String message)
        {
            super(message);
        }
    }

    public static void Example1Method() throws Example1Exception
    {
        throw new Example1Exception("hello"); //error: non-static variable this cannot be referenced from a static context
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在Example1Method中抛出Example1Exception?

java oop

0
推荐指数
1
解决办法
840
查看次数

Java:自动为每个类创建一个.class文件

假设我有一个 A.java,其中两个类(公共类和私有类)都位于同一文件中。

public class A{
    public static void main(string[] args){
        ...
    }
}

class B{
    ...
}
Run Code Online (Sandbox Code Playgroud)

为什么Java在编译A.java时会自动创建A.class和B.class?

是为了避免此类问题吗?/sf/answers/163573371/

如果 Foo.java 引用 Baz 而不是 Bar,并且我们尝试编译 Foo.java,会发生什么情况?编译失败并出现如下错误:

Foo.java:2:找不到符号符号:class Baz 位置:class Foo private Baz baz;^ 1 个错误

另外,我知道使用 Java 的正确方法是每个类一个文件,但我想知道为什么 Java 这样做。

java

0
推荐指数
1
解决办法
872
查看次数

.java文件可以有多个类和接口吗?

.java文件可以有多个类(包括main)和接口吗?或者我必须将它们放在不同的.java文件中?

java

0
推荐指数
1
解决办法
303
查看次数

同一个 .java 文件中的多条记录

我们总是可以在一个 .java 文件中有多个类。考虑到封装以及每个类都由多行代码组成,在 1 个 .java 文件中包含 1 个类(不要谈论嵌套类)总是有意义的。

现在记录开始发挥作用,它们可以少至 1 行代码。在同一个 .java 类中封装多个记录是否有意义?

例如我们可以有

DTO.java文件将包含

record Employees(List<Employee> employees) { }  //This is just a wrapper class that we normally need in order to return a list of objects in rest web services
record Employee(String name, Integer age, List<Attribute> attributes){ }
record Attribute(String name, String value) { }
Run Code Online (Sandbox Code Playgroud)

如果没有记录具有公共访问修饰符,那么我们可以将所有记录包含在名为DTO.java的文件中

在我看来,拥有 3 个 .java 文件,每个文件中只有 1 行代码似乎不太好。

但是,我们仍然会面临类似这里描述的问题,即同一 java 文件中的多个类

java class java-record java-16

0
推荐指数
3
解决办法
158
查看次数

java类中的设计模式

可能重复:
Java:一个文件中的多个类声明

最近我经历了一个java类,在其中我发现它是一个名为A的java类,但之后又有一个名为B的类在同一个java文件中写在A类之后..就像这样

class A
{


} 

Class B
{

}
Run Code Online (Sandbox Code Playgroud)

但是这个班终于以A.java的名字保存了,请让我知道它是什么样的设计模式.. !!

java design-patterns

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

不同的类需要在不同的java文件中吗?

我对Java很新,每当我们在学校编写程序时,我们将每个类放在一个单独的java文件中,但我不记得为什么会这样(如果有原因的话).现在我回到我的笔记,并试图"理解"它是如何工作的.

这是必要的,为什么?此外,是否应该存储文件的位置 - 例如在同一目录中?

例如,如果我们有一个类'Vehicle'和一个'Car'类'扩展'Vehicle',我们是否需要分别将'Vehicle'和'Car'保存在java文件'Vehicle.java'和'Car.java'中,或者可以将这两个类保存在(比如)'Test.java'中吗?

复制免责声明:我的问题与不同,因为我的问题是否可以将多个类放在一个.java文件中; 我特别感兴趣的解释,即为什么它/不可能.我对调用该方法不感兴趣(链接的问题只是说'它必要的,现在它叫什么?'):我的问题比这更基本.

java

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

标签 统计

java ×12

class ×1

class-design ×1

design-patterns ×1

java-16 ×1

java-record ×1

nested ×1

oop ×1