Показать сообщение отдельно
Непрочитано 31.05.2017, 17:47   #2
-

По умолчанию Re: Возможно ли сохранить ссылку на класс?

Нет такого понятия как "статический класс".
Есть паттерн "одиночка".
Пример же простой, почему бы не проверить самому?

Код:
PHP код:
package com.company;

import java.util.ArrayList;
import java.util.List;

public class 
Main {

    public static 
void main(String[] args) {
        List<
Basicbasics = new ArrayList<>();
        
basics.add(new ChildBasic("I'm child and i'm not alone!"));
        
basics.add(new ChildBasic("Pew pew, hello, my name is ChildBasic"));
//        basics.add(new ForeverAloneBasic()); нельзя так сделать, ибо конструктор приватный
        
basics.add(ForeverAloneBasic.getInstance());
        
basics.add(ForeverAloneBasic.getInstance());
        
basics.add(new ChildBasic("Another child!"));

        
System.out.println("1st run...");

        for (
Basic basic basics) {
            
basic.doAction();
        }

        
ForeverAloneBasic.getInstance().setMessage("LEAVE ME FFS");

        
System.out.println("\n2nd run...");

        for (
Basic basic basics) {
            
basic.doAction();
        }
    }
}

interface 
Basic {
    
void doAction();
}

class 
ChildBasic implements Basic {

    private 
String message;

    public 
ChildBasic(String message) {
        
this.message message;
    }

    @
Override
    
public void doAction() {
        
System.out.println(this.getClass().getName() + " " message);
    }

}

class 
ForeverAloneBasic implements Basic {
    private 
String message "I'm forever alone, leave me.";

    private static 
ForeverAloneBasic instance = new ForeverAloneBasic();
    public static 
ForeverAloneBasic getInstance() {
        return 
instance;
    }

    private 
ForeverAloneBasic() {
        
// запрещаем создание экземпляра
    
}

    public 
void setMessage(String message) {
        
this.message message;
    }

    @
Override
    
public void doAction() {
        
System.out.println(this.getClass().getName() + " " message);
    }

Вывод:

PHP код:
1st run...
com.company.ChildBasic I'm child and i'm not alone!
com.company.ChildBasic Pew pewhellomy name is ChildBasic
com
.company.ForeverAloneBasic I'm forever alone, leave me.
com.company.ForeverAloneBasic I'
m forever aloneleave me.
com.company.ChildBasic Another child!

2nd run...
com.company.ChildBasic I'm child and i'm not alone!
com.company.ChildBasic Pew pewhellomy name is ChildBasic
com
.company.ForeverAloneBasic LEAVE ME FFS
com
.company.ForeverAloneBasic LEAVE ME FFS
com
.company.ChildBasic Another child
shegan вне форума Ответить с цитированием