为啥我不能像这样实例化一个对象? [复制]

Posted

技术标签:

【中文标题】为啥我不能像这样实例化一个对象? [复制]【英文标题】:Why I can't instantiate an Object like this? [duplicate]为什么我不能像这样实例化一个对象? [复制] 【发布时间】:2018-10-07 14:10:25 【问题描述】:

我已经在主类的不同文件中创建了一个类“CdFilm”。但是我不能用我自己的类来实例化新对象。我这样实例化它:

FileRentalVCD.CdFilm film = new FileRentalVCD.CdFilm(1);

这是“CdFilm”类文件:

public class FileRentalVCD 
    private String judul, publisher;
    private char kategori;
    private int stok;


    public class CdFilm 
        //inheritance from FileRentalVCD
        private String judul, publisher;
        private char kategori;
        private int stok;
        //atribut class CDFilm
        private String pemain, sutrdara;

        //constructor
        public CdFilm (int s) 
            this.stok = s; 
        
        //methods encapsulation

        public String getJudul() 
            return judul;
        

        public void setJudul(String judul) 
            this.judul = judul;
        
    

这是主类,我在其中实例化我的对象:

public class RentalVCD 

    public void EntriCdFilm (FileRentalVCD.CdFilm input) 
        Scanner scan = new Scanner(System.in);
        System.out.println("Masukan Judul : ");
        String judul = scan.next();
        input.setJudul(judul);
    

    public static void main(String[] args) 
        System.out.println("Rental VCD Alif");
        System.out.println("1. Entri data CdFilm");
        System.out.println("2. Entri data CdMusik");
        System.out.println("3. Tampilkan data CdFilm");
        System.out.println("4. Tampilkan data CdMusik");
        Scanner scan = new Scanner(System.in);
        int pilihan = scan.nextInt();
        FileRentalVCD.CdFilm film = new FileRentalVCD.CdFilm(1);
    

【问题讨论】:

你为什么不必要地将一个类包装在另一个类中?这只会增加本应简单的情况的复杂性。 另外,如果您搜索问题的关键词java problem instantiating inner class site:***.com,您会发现许多相似甚至重复的问题。 我不知道,我只是想弄清楚我作业中的问题。这就是我认为用java实现的。如果您有任何解决方案会有所帮助 “如果你有任何解决方案......”是什么意思?我为您提供了 许多 解决方案的链接,但不仅如此,还提供了一个不错的搜索策略,以便您将来可以快速找到类似问题的解决方案。 【参考方案1】:

你可以,只是不使用那种语法。这有点违反直觉,但您可以使用以下内容创建内部类的实例:

FileRentalVCD.CdFilm film = new FileRentalVCD(/* add any args here */).new CdFilm(1);

这是必需的,因为您需要外部类的实例来创建内部类的实例。

【讨论】:

有效!!非常感谢你

以上是关于为啥我不能像这样实例化一个对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

c#为啥实例化对象?啥情况下实例化对象?

█■为啥要用实现接口的类实例化接口呢?

c++实例化一个对象

我们可以直接实例化一个抽象类吗? [复制]

C#中能否在类的内部实例化一个本类的对象?

为啥我不能更改实例化后用作属性的结构中的字段?