相关疑难解决方法(0)

枚举内部类不被识别为枚举

考虑以下Enum类:

public enum APlanet {
    VENUS   ()  {public void stuff(){}},
    EARTH   () {public void stuff(){}},
    MARS    ()  {public void stuff(){}};
    public abstract void stuff();
}

public enum BPlanet {
    VENUS   (),
    EARTH   (),
    MARS    ();
}
Run Code Online (Sandbox Code Playgroud)

然后APlanet.MARS.getClass().isEnum()返回false,然后BPlanet.MARS.getClass().isEnum()返回true.为什么?请注意,APlanet.getDeclaringClass().isEnum()正确返回true.

具体来说,我正在尝试可靠地测试对象是否为枚举:

Object a = APlanet.MARS;
Object b = BPlanet.MARS;
a.getClass().isEnum() /* returns false */
b.getClass().isEnum() /* returns true  */
Run Code Online (Sandbox Code Playgroud)

然而

Enum.class.isAssignableFrom(a.getClass()); /* returns true */
Run Code Online (Sandbox Code Playgroud)

内部类APlanet.MARS不是Enum但是你可以将它分配给枚举,这有点令人困惑,如:

Enum<?> m = APlanet.MARS;
Run Code Online (Sandbox Code Playgroud)

java enums inner-classes

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

我们可以借助Java中的匿名类创建接口和抽象类的实例化吗?

我去采访了.采访者问我是否可以实例化一个接口和抽象类?据我所知,我说"不".但他说"是的,我们可以借助匿名课程".

你能告诉我怎么样吗?

java instantiation

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

如果无法实例化抽象类,那么这段代码是什么:ABS clsAbs = new ABS(){

我有一个关于抽象类的问题.

首先......我正在使用谷歌翻译,对不起:(我希望你理解.

如果无法实例化抽象类,那么这段代码是什么:

public class Ppal {

public void start(){

    ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

    clsAbs.metod();
}
}
Run Code Online (Sandbox Code Playgroud)

ABS:

public abstract class ABS{

public void metod(){}
public abstract void absMetod();

}
Run Code Online (Sandbox Code Playgroud)

ABS clsAbs = new ABS () {...这不是一个例子吗?可以使用clsAbs并且不能使用抽象类,只能创建抽象模型......

它可以用作匿名类,但这(ABS clsAbs = new ABS () {...)不是匿名的.

非常感谢你提前!

java abstract-class class abstract

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

无法实例化java类

我正在关注一个有不同状态要处理的java游戏编程教程.现在我们只是没有对它们做任何事情,只是在我们的主类中实例化它们.定义状态的超类如下:

package com.arjav.tilegame.states;

import java.awt.Graphics;

import com.arjav.tilegame.Game;

public abstract class State {

protected Game game ;

private static State currentState = null ;

public State(Game game) {
    this.game = game ;
}

public static void setState(State state){
    currentState = state ;
}

public static State getState(){
    return currentState ;
}

public abstract void tick();

public abstract void render(Graphics g);
}
Run Code Online (Sandbox Code Playgroud)

我遇到问题的主要课程:

package com.arjav.tilegame;

import java.awt.Graphics;
import java.awt.image.BufferStrategy;

import com.arjav.tilegame.display.Display;
import com.arjav.tilegame.gfx.Assets;
import com.arjav.tilegame.states.GameState;
import com.arjav.tilegame.states.MenuState;
import com.arjav.tilegame.states.State;

public class Game …
Run Code Online (Sandbox Code Playgroud)

java debugging awt

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

为什么首先有抽象类?

我知道创建抽象类背后的概念用法,即为其子类定义一个公共接口,其中一些实现留给各个子类.

我是否正确地假设技术上没有必要抽象类,因为你可以覆盖超类方法?是否创建了抽象类以使类的意图更清晰?

我的意思是:

// Using an abstract class
abstract class Car
{
    int fuel;

    int getFuel()
    {
         return this.fuel;
    }

    abstract String getColor();
}

class RedCar extends Car
{
    String getColor()
    {
        return "red";
    }
}


// Without an abstract class
class Car
{
    int fuel;

    int getFuel()
    {
         return this.fuel;
    }

    String getColor()
    {
         return "defaultColor";
    }

class RedCar extends Car
{
    String getColor()
    {
        return "red";
    }
}
Run Code Online (Sandbox Code Playgroud)

java oop abstract-class class object

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

System.MissingMethodException:无法创建抽象类

扩展命令管理器.cs

var assembly = AppDomain.CurrentDomain.GetAssemblies();
var types = assembly.SelectMany(s => s.GetTypes()).Where(p => typeof(ICommand).IsAssignableFrom(p));
foreach (var type in types)
{
   source.Commands.Add((ICommand) Activator.CreateInstance(type)); 
}

return source; 
Run Code Online (Sandbox Code Playgroud)

类型继承ICcommand 但是为什么会出现错误呢?

错误

Unhandled exception. System.MissingMethodException: Cannot create an abstract class.
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean wrapExceptions, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& hasNoDefaultCtor)
   at System.RuntimeType.CreateInstanceDefaultCtorSlow(Boolean publicOnly, Boolean wrapExceptions, Boolean fillCache)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic, Boolean wrapExceptions)
   at System.Activator.CreateInstance(Type type)
   at BASE.CommandControllers.ExtendedCommandManager.Load[T](T source) in D:\CLang\DicordProject\Discord\BASE\CommandControllers\ExtendedCommandManager.cs:line 16
Run Code Online (Sandbox Code Playgroud)

c#

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