有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java构造函数从未被使用过

我有一些问题

我有一个家长班

abstract class Tetramino{}

以及一些子类,这些子类使用显式列出的默认构造函数扩展父类

class LineHorizontal extends Tetramino
{
  LineHorizontal() { // do some}
}

class LineVertical extends Tetramino
{
  LineVertical () {// do some}
}

我有一个生成子类的生成器类

class MinoGenerator
{
    private static final String TAG = "MinoGenerator";

    private static final Class[] types = {LineHorizontal.class,     LineVertical.class, Square.class,
        L0.class, L90.class, L180.class, L270.class, LR0.class, LR90.class, LR180.class,
        LR270.class, T0.class, T90.class, T180.class, T270.class, Z0.class,
        Z180.class, RZ0.class, RZ180.class};

    static Tetramino next()
    {
        try{
           int type = (int) (Math.random() * types.length);
           return (Tetramino) types[type].newInstance();
       } catch (Exception e){
          e.printStackTrace();
          Log.e(TAG, "Error while creating new tetramino");
      }
      return null;
    }
}

当我想创建一个新的时,我调用next()。 然后,一个newInstance()函数调用consturtors implicit并返回一个随机值。 但是安卓 studio在构造函数上标记了一个警告“构造函数从未使用过”,我如何修复它? 谢谢你的回复


共 (2) 个答案

  1. # 1 楼答案

    假设使用Jack,更好的方法是使用lambda表达式:

    private static final List<Supplier<? extends Tetramino>> types =
        Collections.unmodifiableList(
            Arrays.asList(
                LineHorizontal::new,  // or () -> new LineHorizontal()
                LineVertical::new,
                // etc, for other types
                ));
    

    然后,在next()方法中:

    return types[type].get();
    

    请注意,这实际上是在使用类的构造函数,因此不再有未使用的警告。而且它比反射更安全

  2. # 2 楼答案

    尝试添加@SuppressWarnings("unused")悬停在你的类中

    比如:

    @SuppressWarnings("unused")
    class MyClass{
    
        public MyClass(){}
    }
    

    这在IntelliJ IDEA上是可行的,我认为在Android Studio上也是可行的