Как изменить класс не называя его

323
07 сентября 2017, 16:42

Есть класс Cars

package sample.cars;
public class Cars {
    public static void main(String[] args) {
         Car chevrolet = new Car();
    }
}

И класс Car

package sample.cars;
public class Car {
    //Как сделать так чтобы можно было не называть класс при создании объекта
    class Motor {
         public boolean isElectro = false;
    }
}

И мне не нужно называть вложенный класс внутри метода main. А просто обращаться к классу Motor по самому названию класса т.е. так chevrolet.Motor.isElectro

Answer 1

Никак. Если есть объект, то у него должен быть и тип. Безымянных классов не бывает.

Можно сделать так: https://ideone.com/kLiZPn

import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
  public static void main (String[] args) throws java.lang.Exception {
    Car chevrolet = new Car();
    System.out.println(chevrolet.Motor.isElectro);
  }
}
class Car {
  static class Motor {
     public boolean isElectro = false;
  }
  public Motor Motor = new Motor();
}

Но замечу, что в джаве принято писать поля и методы с маленькой буквы, т. е. не chevrolet.Motor.isElectro, а chevrolet.motor.isElectro. А ещё принято использовать геттеры и сеттеры, но это к вопросу вообще не относится.

Answer 2

Как вариант chevrolet.motor.isElectro

public class Cars {
    public static void main(String[] args) {
        Car chevrolet = new Car();
        System.out.println(chevrolet.motor.isElectro);
    }
}
public class Car {
    public Motor motor = new Motor();
     class Motor {
         public boolean isElectro = false;
   }
}
READ ALSO
не обновляется foreign key в дочерней таблице

не обновляется foreign key в дочерней таблице

Есть две таблицы, в главной таблице есть столбец name, который является ключем для дочерней таблицыКогда я обновляю name, делаю это так:

194
Вложенные generics

Вложенные generics

Доброго времени суток, решил полезть в generics глубже, чем SomeClass<T>, и наскочил на сложности

209
Тестирование кода в Travis CI, подскажите

Тестирование кода в Travis CI, подскажите

Подскажите пожалуйста решение данной ошибки , код по ссылке https://githubcom/pamatixxx/HelloWorldTime

303